0

データベースにクエリを実行し、4 つの異なるテーブルから情報を引き出す次の SQL があります。

 SELECT d.item AS day, m.item as month, y.item as yr, l.item as local
 FROM date_day d
 JOIN date_month m ON d.recid=m.recid
 JOIN date_year y ON d.recid=y.recid
 JOIN location l ON d.recid=l.recid
 WHERE d.recid='cneta0ld00s6'

これらのテーブルの 1 つ以上が空で、値が含まれていない可能性があります。特に日付フィールドで。上記のいずれかが空または存在しない場合、全体が失敗しますか? mysql には FULL JOIN がないことがわかっているので、date_day について特に心配しています。

何かご意見は?

4

2 に答える 2

1

私はそれを考えます:

SELECT d.item AS day, m.item as month, y.item as yr, l.item as local
 FROM date_day d
 LEFT JOIN date_month m ON d.recid=m.recid
 LEFT JOIN date_year y ON d.recid=y.recid
 LEFT JOIN location l ON d.recid=l.recid
 WHERE d.recid='cneta0ld00s6'

あなたがしたいことをします

于 2012-09-12T11:31:34.927 に答える
1

nullの場合でもテーブルから常にデータを取得できるようにするために、メインテーブルとして別のテーブルを追加しました。これには常にrecidが含まれます。テーブルは写真です。そうすれば、null がたくさんある場合でも、クエリが常に何かを返すようになります。これは、左結合も使用できることを意味しました。

 SELECT p.photo_file, d.item AS day, m.item as month, y.item as yr, l.item as local
  FROM photo p
 LEFT JOIN date_day d ON p.recid=d.recid
 LEFT JOIN date_month m ON p.recid=m.recid
 LEFT JOIN date_year y ON p.recid=y.recid
 LEFT JOIN location l ON p.recid=l.recid
 WHERE p.recid='paul'
于 2012-09-12T14:38:37.837 に答える