-3

ちょっと私が始めた最近のプロジェクトで私の頭の上にいます。

すべてのテーブルの内容が 1 つのクエリで表示されるように、結合する必要がある 8 つのテーブルを取得しました。

しかし、私はSQLにまったく慣れていないため、適切なクエリを思い付くのに苦労しています

キーが互いにどのような関係にあるかを示すデータベース ダイアグラムを作成しました。単なる情報である矢印が割り当てられていないものは気にしないでください。

ダイアグラム

したがって、基本的には、8つのテーブルすべてを結合して、phpスクリプトを介してたとえば.

$result = mysql_query("SQL");

$row = mysql_fetch_array($result);

$id = $row["値"]; もちろん、乗算アイテムを表示するためにある種のループを使用します

それは私のフロントページの複数の項目で終わり、そのカテゴリの最新の項目によって表示されるべきであり、私が期待し、参加する場所は簡単だと思います.

しかし、全体として、私が探しているのは、8 つのテーブルの任意の情報を使用できるように、1 つのクエリで 8 つのテーブルを結合する SQL です。

私は実用的な解決策を見つけたと思います

SELECT *
FROM Deal d
INNER JOIN DealPrice dp ON d.Id = dp.DealId
LEFT JOIN DealMedia dm ON d.Id = dm.DealId
LEFT JOIN StorageFile sf ON dm.Id = sf.binId AND sf.name = 'original_t'
LEFT JOIN DealLocation dl ON d.Id = dl.dealid
LEFT JOIN Location l ON dl.location = l.id
LEFT JOIN DealCategoryAssoc dca ON d.Id = dca.DealId
LEFT JOIN DealCategory dc ON dca.CategoryId = dc.id
LEFT JOIN I18N i ON dc.id = i.relatedId AND i.model = 'DealCategory' AND i.language = 'da_dk'

ダイアグラムに取り込まなかった別のテーブル DealLocation があることがわかったので、自分でコードを少し変更しました

4

3 に答える 3