私は3テーブルのDB:categories
,items
,relation
を持っています。 categories
にカテゴリが含まれています。商品はitems
に格納され、relation
はバインディングテーブルであり、製品IDとカテゴリIDまたはカテゴリを格納します。他のpk to pkテーブルで記述されている2つのテーブルの関係をクエリする方法は?
どのように私は、アイテムの特定のリストについては、すべてのカテゴリの名前を得ることができますか?
私は3テーブルのDB:categories
,items
,relation
を持っています。 categories
にカテゴリが含まれています。商品はitems
に格納され、relation
はバインディングテーブルであり、製品IDとカテゴリIDまたはカテゴリを格納します。他のpk to pkテーブルで記述されている2つのテーブルの関係をクエリする方法は?
どのように私は、アイテムの特定のリストについては、すべてのカテゴリの名前を得ることができますか?
LEFT JOIN
このように簡単に試すことができます。
SELECT
*
FROM
items AS i
LEFT JOIN relation AS r ON i.id = r.id_items
LEFT JOIN categories AS c ON r.id_cat = c.id
これが役に立ちます。クエリがあなたなら、私を知ってみましょう
テーブルの関係に
SELECT
*
FROM
items AS i
RIGHT JOIN relation AS r ON i.id = r.id_items
LEFT JOIN categories AS c ON r.id_cat = c.id
を関係を定義している項目のみを与える以下ものの、クエリの上
はあなたにも、関係テーブルにマッピングされたノートあるすべてのアイテムを与えますエラーが発生します。
ただ、それらを結合:INNER JOINをすることを
SELECT *
FROM relation r
INNER JOIN items i ON r.id_items = i.id
INNER JOIN categories c ON r.id_cat = c.id
注のみ、両方のテーブルに表示レコードを選択します。 *はすべての列を選択します。これらのすべてを必要としない場合は、i.id、i.name、c.id、c.nameなどのようなものを選択することができます。
はいこれも機能します。いいです! –
SELECT distinct(c.name) from categories c
JOIN relation as r on c.id = r.id_cat
JOIN items as c on i.id = r.id_items
WHERE i.id in (8, x, y, z, ...etc)
テーブルを単に 'ジョインする '。 – jarlh
ツリーテーブル間の単純な内部結合と見えます – bksi
https://www.w3schools.com/sql/sql_join.asp – etsa