Mysql查询 - 连接,子查询,如果存在

时间:2017-05-04 16:33:19

标签: mysql

我正在努力解决一个问题。我只是无法绕过它。

我有4个表:库存,样式,尺寸,style_sizes

库存包含user_id,样式,大小等列。 样式包含列:style_id,样式(样式的名称)等。 大小包含列:size_id,size等(sm,md,lg等) style_sizes包含列:style_size_id,style_id,size_id(这是列出可用于所选样式的大小)

我需要的是列出user_id = x和style = y(而不是style_id)的所有库存,其中用户具有大小并按size_id排序。

目前,即使用户没有,也可以显示该样式的所有尺寸。

到目前为止这是查询...

SELECT i.*, st.*, ss.* 
            FROM inventory as i
            JOIN style as st
            ON i.style = st.style
            JOIN style_sizes as ss
            ON st.style_id = ss.style_id
            WHERE i.user_id = $user_id AND i.style = :style

我很接近,但我不知道从哪里开始。谢谢你提前。

1 个答案:

答案 0 :(得分:0)

您需要在联接中加入size_id,这样您才能获得该用户的尺寸。

SELECT i.*, st.*, ss.* 
FROM inventory as i
JOIN style as st
    ON i.style = st.style
JOIN style_sizes as ss
    ON st.style_id = ss.style_id AND i.size_id = ss.size_id
WHERE i.user_id = :user_id AND i.style = :style