複数の列を使用したSQL内部結合

トム・グラノット

私は2つのテーブルを持っています-料理材料

皿、私はそのようなとして注文ピザ料理のリストを、持っています:料理テーブル

食材、私はそのようなよう命じたすべての料理のためのすべての異なる成分のリストを、持っています:成分表

各料理の名前と一緒に、各料理のすべての材料のすべての名前リストできるようにしたいと思います。

成分IDを本来の名前に置き換えず、代わりに空のセットを返すことを選択するこのクエリを作成しました-私が間違っていることを説明してください:

    SELECT dishes.name, ingredients.name, ingredients.id
FROM dishes
INNER JOIN ingredients
ON dishes.ingredient_1=ingredients.id,dishes.ingredient_2=ingredients.id,dishes.ingredient_3=ingredients.id,dishes.ingredient_4=ingredients.id,dishes.ingredient_5=ingredients.id,dishes.ingredient_6=ingredients.id, dishes.ingredient_7=ingredients.id,dishes.ingredient_8=ingredients.id;

あなたが参照することができればそれは素晴らしいでしょう:

  1. The logic of the DB structuring - am I doing it correctly?
  2. The logic behind the SQL query - if the DB is built in the right fashion, then why upon executing the query I get the empty set?
  3. If you've encountered such a problem before - one that requires a single-to-many relationship - how did you solved it in a way different than this, using PHP & MySQL?

Disregard The Text In Hebrew - Treat It As Your Own Language.

Eric Hotinger

1. The logic of the DB structuring - am I doing it correctly?

  • This is denormalized data. To normalize it, you would restructure your database into three tables:
    • Pizza
    • PizzaIngredients
    • Ingredients

Pizza would have ID, name, and type where ID is the primary key.

PizzaIngredientsなければならないPizzaIdIngredientId(これは、主キーは複合キーである多く、多くのテーブルであるPizzaIdIngredientID

Ingredients持っているIDnameどこID主キーです。

2.各料理の名前と一緒に、各料理のすべての材料のすべての名前をリストします。MySQL(未テスト)のこのようなもの

SELECT p.ID, p.name, GROUP_CONCAT(i.name) AS ingredients
FROM pizza p
INNER JOIN pizzaingredients pi ON p.ID = pi.PizzaID
INNER JOIN ingredients i ON pi.IngredientID = i.ID
GROUP BY p.id

3.以前にこのような問題(単一対多の関係が必要な問題)に遭遇した場合、PHPとMySQLを使用して、これとは異なる方法でどのように解決しましたか?

  • あなたの例が本当にあるので、多対多の関係を使用します。あなたは多くの材料を持つことができる多くのピザを持っています。そして、多くの材料は多くの異なるピザに属しています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数のリストを使用した内部結合

分類Dev

内部結合MYSQLを使用した複数のテーブルの結合

分類Dev

SQLを使用した集約関数に基づく複数の列の結合

分類Dev

複数の外部結合を使用したSQLの合計

分類Dev

複数の列の結合を使用した累積合計

分類Dev

SQLは複数の列で外部結合を残しました

分類Dev

内部結合を使用したクエリでの複数の複製

分類Dev

t-sqlは、内部結合を使用して複数の行を更新します

分類Dev

SQL複数の内部結合

分類Dev

TYPEORMを使用した複数の結合

分類Dev

Codeigniterを使用した複数の結合

分類Dev

複数の結合とgroupbyを使用したSQLからLINQへ

分類Dev

stringdist_joinを使用した複数の列による結合

分類Dev

複数の条件を使用した内部結合rデータテーブル

分類Dev

SequelizeORMを使用して複数の内部結合を作成する

分類Dev

SQLの複数の内部結合で条件が失敗した場合

分類Dev

SQLクエリ-内部結合を使用してテーブル内のIDを持つ複数の列の合計を取得する

分類Dev

ラムダエラーを使用した複数の列でのlinqからsqlへの結合

分類Dev

LEFT文字列関数を使用したSQLKata内部結合

分類Dev

null列を使用したMySQL内部結合

分類Dev

内部結合を使用した json 配列

分類Dev

SQLはMYSQLで複数の変数と内部結合を使用して順序付けしない

分類Dev

SQLで文字で分割された複数の列を結合します

分類Dev

内部結合を使用したsqlの更新とその場所

分類Dev

SQL:同様のテーブルを使用した複数の左結合

分類Dev

内部結合を使用した単一または複数のオカレンスレコードのみ

分類Dev

mysqlで左内部結合を使用して複数の行を照合する方法

分類Dev

SQLServerの複数の列の内部結合

分類Dev

3つのテーブルを使用したSQL内部結合

Related 関連記事

  1. 1

    複数のリストを使用した内部結合

  2. 2

    内部結合MYSQLを使用した複数のテーブルの結合

  3. 3

    SQLを使用した集約関数に基づく複数の列の結合

  4. 4

    複数の外部結合を使用したSQLの合計

  5. 5

    複数の列の結合を使用した累積合計

  6. 6

    SQLは複数の列で外部結合を残しました

  7. 7

    内部結合を使用したクエリでの複数の複製

  8. 8

    t-sqlは、内部結合を使用して複数の行を更新します

  9. 9

    SQL複数の内部結合

  10. 10

    TYPEORMを使用した複数の結合

  11. 11

    Codeigniterを使用した複数の結合

  12. 12

    複数の結合とgroupbyを使用したSQLからLINQへ

  13. 13

    stringdist_joinを使用した複数の列による結合

  14. 14

    複数の条件を使用した内部結合rデータテーブル

  15. 15

    SequelizeORMを使用して複数の内部結合を作成する

  16. 16

    SQLの複数の内部結合で条件が失敗した場合

  17. 17

    SQLクエリ-内部結合を使用してテーブル内のIDを持つ複数の列の合計を取得する

  18. 18

    ラムダエラーを使用した複数の列でのlinqからsqlへの結合

  19. 19

    LEFT文字列関数を使用したSQLKata内部結合

  20. 20

    null列を使用したMySQL内部結合

  21. 21

    内部結合を使用した json 配列

  22. 22

    SQLはMYSQLで複数の変数と内部結合を使用して順序付けしない

  23. 23

    SQLで文字で分割された複数の列を結合します

  24. 24

    内部結合を使用したsqlの更新とその場所

  25. 25

    SQL:同様のテーブルを使用した複数の左結合

  26. 26

    内部結合を使用した単一または複数のオカレンスレコードのみ

  27. 27

    mysqlで左内部結合を使用して複数の行を照合する方法

  28. 28

    SQLServerの複数の列の内部結合

  29. 29

    3つのテーブルを使用したSQL内部結合

ホットタグ

アーカイブ