我是MySQL新手,我遇到了JOIN问题。请给我一些如何实现我需要的提示。
我的表:
"user" table:
- user_id
- user_name
- user_email
"favouriteRestaurant" table:
- favrst_id
- user_id
- rst_id
"restaurant" table:
- rst_id
- rst_name
- rst_city
- rst_cuisine
- rst_phone
- rst_latitude
- rst_longitude
我的查询流程:
我需要的最终数据是:
我希望我的解释足够清楚。如果不清楚请询问/评论。非常感谢你。
以下是实际的SQL(上表是简化的)我到目前为止已尝试但结果绝对不是我想要的。它给了我所有的餐厅,而不是在favRst中匹配。
SELECT
user.email,
user.user_id,
favourite_rst.restaurant_id,
favourite_rst.restaurant_id,
favourite_rst.user_id,
restaurant.name
FROM
user,
favourite_rst,
restaurant
WHERE
(user.email = 'user@abc.com')
答案 0 :(得分:3)
你也可以试试这个:
SELECT FR.favrst_id, FR.rst_id, R.rst_name, R.rst_city,
R.rst_cuisine, R.rst_phone, R.rst_latitude, R.rst_longitude
FROM user U,
favouriteRestaurant FR,
restaurant R
WHERE U.user_email = "aaaa@example.com"
and U.user_id = FR.user_id
and FR.rst_id = R.rst_id
并使用内部联接比较执行时间而不使用内部联接。
答案 1 :(得分:2)
试试这个:
SELECT favrst_id, FR.rst_id, rst_name, rst_city,
rst_cuisine, rst_phone, rst_latitude, rst_longitude
FROM user U
INNER JOIN favouriteRestaurant FR ON U.user_id = FR.user_id
INNER JOIN restaurant R ON FR.rst_id = R.rst_id
WHERE user_email = "%$email%"
答案 2 :(得分:2)
希望它可以帮到你
SELECT r.* , fr.favrst_id FROM restaurant r LEFT JOIN favourite_rst fr ON r.rst_id = fr.rst_id LEFT JOIN user u ON fr.user_id = u.user_id WHERE u.user_email = "abc@example.com"