3

次の列を持つ 2 つのテーブルがあります。

表1:

id, agent_name, ticket_id, category, date_logged

テーブル 2:

id, agent_name, department, admin_status

私が達成しようとしているのは、エージェント部門がテーブル2の部門と等しいテーブル1からすべての行を選択することです。

いくつかの異なる結合ステートメントを試しましたが、構文が間違っているか、このテーブル設定では機能しません。私は MySQL に関しては初心者であり、JOIN を読んだ限りでは複雑なスペクトルの端にいます!

私が検討したもう1つのオプションは、列「部門」をtable1に複製することですが、フロントエンドでもう少しコーディングが必要になるため、それを行わなくても目的の結果を達成できるかどうかを確認しようとしています.

どんな援助も大歓迎です。

4

3 に答える 3

4

あなたの質問はよくわかりません...table2だけに部門があり、共通しているのはagent_nameだけです。

私はあなたが本当に意味しているのは、エージェントが特定の部門から来ているTable1のすべての行が必要だと思いますが、それはあなたが望むものですか?その場合、このようなものがそれを行うはずです(しかしそれをテストしていません):

SELECT * FROM Table1 
      INNER JOIN Table2 
      ON Table1.agent_name = Table2.agent_name 
      WHERE Table2.department = 'somespecific value';

ところで:(他の誰かが言ったことに触発されて)それは文字列値のように聞こえます、あなたは本当にそれらを一緒にリンクするためagent_nameにtable1のキーとしてtable2からのidを使用することを検討する必要があります(おそらくそれを呼びましょう)。agent_id外部キー(テーブル間のリンク)は、実際の一意のIDである必要があります。部門はおそらくすべてIDキーである必要があります。次に、次のようになります。

SELECT * FROM Table1 
      INNER JOIN Table2 
      ON Table1.agent_id = Table2.id 
      WHERE Table2.department = 'somespecific value';
于 2008-12-04T11:16:49.700 に答える
0

正確には理解できませんが、必要なものとテーブルの関連性については、似たようなものを試してみます。

select 
    a.id, a.agent_name, a.ticket_id, 
    a.category, a.date_logged, b.department
from 
    table1 a inner join table2 b on b.agent_name=a.agent_name

現在、agent_nameのテーブルをリンクする必要があると想定しています。

ところで、結合はSQLスペクトルの最も単純な終わりです:)

于 2008-12-04T11:09:06.707 に答える
0

両方でエージェント名を使用する代わりに、2つのテーブルの間に一意のリレーショナルキーを追加する必要があります。このようなもの:

Table1: id, agent_id,  ticket_id, category, date_logged
Table2: agent_id, agent_name, department, admin_status

SQLの例:

SELECT t2.agent_name, t1.date_logged FROM table1 t1
INNER JOIN table2 t2 ON t2.agent_id = t1.agent_id

ただし、ある種の外部結合を使用したい場合があるので、インターネット上のいくつかの記事を参照することをお勧めします。

于 2008-12-04T11:13:46.853 に答える