Tablolardan birden çok sonuç Çıkarılması

0 Cevap php

recipe db devam ediyor ...

categories

cid | category_name
 1  | desserts
 2  | cakes
 3  | biscuits

recipes

id | recipe_name
1  | black forest cake
2  | angel cake
3  | melting moments
4  | croquembouche
5  | crepes suzette

ingredients

iid | ingredient_code | ingredient_name      | ingredient_brand
 1  |     abc201      | self-raising flour   |    white wings
 2  |     abc202      | milk                 |    pura
 3  |     abc203      | chocolate            |    plaistock
 4  |     abc204      | baking powder        |    mackenzie
 5  |     abc205      | plain flour          |    white wings
 6  |     abc206      | eggs                 |    free range

recipe_categories

recipe_id | category_id
   1      |    1
   4      |    1
   5      |    1
   1      |    2
   2      |    2
   3      |    3
   4      |    3

recipe_ingredients

recipe_id | ingredient_id
   1      |    1
   2      |    1
   4      |    1
   1      |    2
   2      |    2
   3      |    2
   5      |    2
   1      |    3
   2      |    3
   1      |    4
   3      |    5
   4      |    5

Ozatomic önerdiği gibi, ben aşağıdaki sorguyu kullanarak ediyorum:

SELECT A.recipe_name, GROUP_CONCAT(ingredient_name) AS ingredient_names
FROM recipes A
LEFT JOIN recipe_ingredients B ON A.id = B.recipe_id
LEFT JOIN ingredients C ON B.ingredient_id = C.iid
LEFT JOIN recipe_categories D ON A.id = D.recipe_id
LEFT JOIN categories E ON D.category_id = E.cid
WHERE category_id = <search_id>
GROUP BY id

Sorun ben ben şu hala (web outputted gerekir gibi maddeler listesine GROUP_CONCAT kullanmak mümkün olduğum anlamına gelecek böyle ingredient_code ve ingredient_brand gibi maddeler tablodaki ek alanlar, ihtiyaç gidiyorum fark ettik, bir kategoriye göre):

black forest cake:
abc201  white wings   self-raising flour
abc202  pura          milk
abc203  plaistock     chocolate

croquembouche:
abc201  white wings   self-raising flour
abc204  white wings   plain flour

crepes suzette:
abc202  pura          milk
abc205  white wings   plain flour
abc206  free range    eggs 

Ben de bunu başarmak için iki sorgu kullanabilirsiniz, ya da bir foreach döngü kullanmak zorunda gidiyorum duygu olsun. Iyi olurdu ve onu nasıl hakkında gitmek hangisi?

MTIA!

edit: Ben de html etiketleri kullanarak veya divlere veya herneyse koyarak, sonuçlarını biçimlendirmek gerekiyor.

0 Cevap