私は3つのテーブルorders、ordered_dishes、ordered_dish_optionsを持っています。mysqlの1対2の多数のテーブルへの参加
orders
------
order_id | customer_name
1 | John smith
ordered_dishes
--------------
order_id | ordered_dish_id | dish_id | amount
1 | 1 | 3 | 1
1 | 2 | 3 | 2
1 | 3 | 6 | 1
ordered_dish_options
--------------------
order_id | ordered_dish_id | dish_option_id
1 | 1 | 2
1 | 2 | 4
1 | 3 | 3
をdish_option_id dish_id = 3ですが、料理+料理のオプションの組み合わせは異なります。
私は次のクエリを持っている:
"SELECT orders.*,
GROUP_CONCAT(ordered_dishes.dish_id SEPARATOR ', ') dish_ids,
GROUP_CONCAT(ordered_dishes.amount SEPARATOR ', ') dish_amounts,
GROUP_CONCAT(ordered_dishes.ordered_dish_id SEPARATOR ', ') dish_odi,
GROUP_CONCAT(ordered_dish_options.ordered_dish_id SEPARATOR ', ') do_odi,
GROUP_CONCAT(ordered_dish_options.dish_option_id SEPARATOR ', ') dish_option_ids
FROM orders
LEFT JOIN ordered_dishes ON orders.order_id=ordered_dishes.order_id
LEFT JOIN ordered_dish_options ON orders.order_id=ordered_dish_options.order_id
WHERE orders.order_id=1"
このクエリは、私のこれを与える:
order_id,
orderdata,
dish_ids='3,3,6,3,3,6,3,3,6',
dish_amounts='1,2,1,1,2,1,1,2,1',
dish_odi='1,2,3,1,2,3,1,2,3',
do_odi='1,1,1,1,1,1,1,1,1'
dish_option_id='2'
私が欲しいのは、すべてのORDER_DATA、dish_id +量+ ordered_dish_id、dish_option_id + ordered_dish_idです。最後の2つのテーブルのordered_dish_idsを使用して、dish_optionを対応するディッシュにリンクします。
order_idは重複しています. – Pete
いいえ、すべての注文ごとに、ordered_dish_id(odi)が1から増分を開始するため、order1は3つのodi1,2,3で構成されています。オーダー2は、例えば、odi1,2,3,4を有する4つの皿を有する。したがって、ordered_dish_optionsが結合されているときはorder_idで結合し、ordered_dishから対応するodiにリンクする必要があります – user4309314
独自の方法がありますか – Pete