0

そのため、結合の実行についていくつか質問し、すばらしい回答を得ましたが、まだ完全に困惑していることがあります。

私は3つのテーブルを持っています。それらをtable-b、table-d、table-eと呼びましょう。
Table-bとtable-dは、p-idという列を共有します。
Table-eとtable-bは、ev-idという列を共有します。
Table-eには、dateという列もあります。
Table-bには、u-idと呼ばれる一意のid列もあります。

次の条件でu-idを返すクエリを作成したいと思います
。1)table-e.dateの特定の値に制限されています。
2)table-bp-idがtable-dp-idと一致しない場合。

e-id列でtable-bとtable-eを内部結合する必要があると思います。次に、p-idがnullであるtable-dとtable-bに対して左結合を実行する必要があると思います。
私の問題は、このクエリを書くための構文がわからないことです。複数の内部結合を作成する方法と、左結合を作成する方法を知っています。2つを組み合わせるにはどうすればよいですか?

私を助けてくれたすべての人に感謝します。私は(明らかに!)データベースの初心者であり、すべてを理解するのに苦労しています!

4

2 に答える 2

3

結合を次々に記述します。

SELECT b.uid
  FROM b
  INNER JOIN e USING(evid)
  LEFT JOIN d USING(pid)
  WHERE e.date = :whatever
    AND d.pid IS NULL
于 2009-07-04T18:23:28.707 に答える
0

私はそれがこのようなものだと思います:

SELECT uid
  FROM table-b
  INNER JOIN table-e
      ON table-b.ev_id = table-e.ev_id
  WHERE table-b.p_id NOT IN (SELECT p_id from table-d)
于 2009-07-04T18:28:00.087 に答える