我的SELECT sql语句出现问题,我还没想到。当我使用mysql_fetch_assoc()
函数打印出结果时,我得到重复的行/记录。记录重复13次。我不知道为什么,就我的知识告诉我,我做得对。
以下是我的SQL查询:
SELECT
members.member_id,
members.firstname,
members.lastname,
billing_details.Street_Address,
billing_details.Mobile_No,
orders_details.*,
food_details.*,
categories.*,
cart_details.*,
quantities.*
FROM
members, billing_details, orders_details, categories,
quantities, food_details, cart_details
WHERE
members.member_id=orders_details.member_id AND
billing_details.billing_id=orders_details.billing_id AND
orders_details.cart_id=cart_details.cart_id AND
cart_details.food_id=food_details.food_id AND
cart_details.quantity_id=quantities.quantity_id
答案 0 :(得分:3)
WHERE子句中没有“类别”。我猜你有13个类别?如果您需要更好的解释,请告诉我。
答案 1 :(得分:1)
使用SELECT DISTINCT
。
请注意
使用mysql_*
库是不好的做法。它们已弃用,应替换为mysqli_*
库或PDO
对象。
答案 2 :(得分:1)
为什么不让左边的连接像下面那样
SELECT members.member_id, members.firstname, members.lastname, billing_details.Street_Address, billing_details.Mobile_No, orders_details.*, food_details.*, categories.*, cart_details.*, quantities.* FROM members as m
Left join billing_details as b ON b.billing_id=m.?
LEFT JOIN orders_details as o ON o.cart_id=m.?
LEFT JOIN food_details as f ON f.f_id =m.?
LEFT JOIN cart_details as c ON c.?=?
LEFT JOIN quantitiesas q ON q.?=?
LEFT JOIN categories as cat ON cat.?=?
答案 3 :(得分:0)
如果您只希望每个member_id出现一次,则可以使用DISTINCT
:
SELECT DISTINCT members.member_id, ...
您也可以使用JOIN USING
来避免重复(干):
http://dev.mysql.com/doc/refman/5.7/en/join.html(搜索USING(column_list)
)
这样,你也注意到了msising谓词,因为它就在连接的表名旁边。