是否可以使用一个SQL语句来获取下面的数据?
故事:我想要一个包含多个收据的多个成分的列表。
db now:
LIST
lIST_LINE(可与收据联系)
RECEIPT
receipt_id
receipt_name
...
RECEIPT_LINE(与成分连接)
receipt_id
ingredient_id
INGREDIENT
ingredient_id
ingredient_name
...
我想要一个列表项中所有收据所需的所有成分的完整列表。
这可能在1个查询中,或者我必须在php(带数组)中运行多个查询
答案 0 :(得分:0)
当然,请使用多个INNER JOIN
语句。
SELECT * FROM LIST
JOIN
IIST_LINE
ON
IIST_LINE.list_id = LIST.list_id
JOIN
RECEIPT
ON
IIST_LINE.receipt_id = RECEIPT.receipt_id
JOIN
RECEIPT_LINE
ON
RECEIPT_LINE.receipt_id = RECEPT.receipt_id
JOIN
INGREDIENT
ON
INGREDIENT.ingredient_id = RECEIPT_LINE.ingredient_id
然后为您要排序的特定列添加SORT BY
(如receipt_line)
答案 1 :(得分:0)
是的,你可以加入,但你应该像现在一样在每张桌子上都有关系:
SELECT *
FROM list l
INNER JOIN list_line ll ON ll.list_id = l.list_id
INNER JOIN receipt r ON r.receipt_it = ll.receipt_id
INNER JOIN receipt_line rl ON rl.receipt_id = r.receipt_id
INNER JOIN ingredient i ON i.ingredient_id = rl. ingredient_id
答案 2 :(得分:0)
是的,你可以:
SELECT ll.list_id,i.ingredient_id,i.ingredient_name,r.receipt_id,r.receipt_name
FROM list_line ll
INNER JOIN receipt r ON r.receipt_id = ll.receipt_id
INNER JOIN receipt_line rl ON rl.receipt_id = r.receipt_id
INNER JOIN ingredient i ON i.ingredient_id = rl. ingredient_id
如果您不想打印list_name,则不需要第一张表(列表),因此我选择退出。