Mysql SQL中的左连接与内部连接
我有一个问题需要解决:我有三个表与内部联接联接。然而,在这个名为products、shopping cart、purchase的三个表中,我需要做一个左连接,以获得尚未在商店系统中购买的用户列表 为此,我尝试在entity products->shopping cart中进行左连接,然后尝试内部连接购买和购物车 结果如何?系统不会忽略该请求 我的目标是在给定的时间间隔内返回用户购买的所有商品,而不是事实 为方便起见,我附上一份数据库副本和照片Mysql SQL中的左连接与内部连接,mysql,sql,Mysql,Sql,我有一个问题需要解决:我有三个表与内部联接联接。然而,在这个名为products、shopping cart、purchase的三个表中,我需要做一个左连接,以获得尚未在商店系统中购买的用户列表 为此,我尝试在entity products->shopping cart中进行左连接,然后尝试内部连接购买和购物车 结果如何?系统不会忽略该请求 我的目标是在给定的时间间隔内返回用户购买的所有商品,而不是事实 为方便起见,我附上一份数据库副本和照片 SELECT prodotti.nome_prodo
SELECT prodotti.nome_prodotto, carrello.quantita, acquisto.data_acquisto
FROM ( subquery.prodotti prodotti
LEFT JOIN subquery.carrello carrello
ON (prodotti.id_prodotto = carrello.id_prodotto))
JOIN subquery.acquisto acquisto
ON (acquisto.id_acquisto = carrello.id_acquisto)
我尝试过以下解决方案:
SELECT prodotti.nome_prodotto, acquisto.data_acquisto, carrello.quantita
FROM ( prodotti
LEFT JOIN carrello
ON prodotti.id_prodotto = carrello.id_prodotto )
INNER JOIN acquisto
ON acquisto.id_acquisto = carrello.id_acquisto
及
但是什么都没有…我返回一个类似于内部联接的结果
附言:在那里你可以找到数据库和蟾蜍文件的副本
在所有内部连接之后,尝试执行左连接。编辑:阅读您的评论后,我对问题有了更多的理解-听起来您似乎在尝试查看购物车中的项目数据,但在X个时间段内尚未购买
为此,请左键联接purchase表,然后使用WHERE子句将结果限制为特定的时间差。因为我们使用的是左联接,所以purchase表并不总是有一个值,因此在这种情况下,我们使用IFNULL来指定今天的数学日期。如果购物车中的商品仍然没有被购买,请计算它在购物车中的天数
SELECT /*products in cart*/
prodotti.nome_prodotto
,carrello.quantita
FROM
prodotti
INNER JOIN carrello
ON prodotti.id_prodotto = carrello.id_prodotto
LEFT JOIN acquisto
ON acquisto.id_prodotto = carrello.id_prodotto
WHERE
/* show only items over a certain age - 5 days in this example */
DATEDIFF((ifnull(acquisto.id_acquisto,NOW()) /* use today's date if purchase doesn't exist */
- carrello.id_acquisto) > 5)
我试过这个选择prodotti.nome\u prodotto,acquisto.data\u acquisto,carrello.quantita从acquisto内部加入carrello ON acquisto.id\u acquisto=carrello.id\u acquisto左加入prodotti.id\u prodottom=carrello.id\u prodottomm..我有三个表:产品、购物车、购买的。。。。我需要看看哪些元素在X天内买不到。我已经更新了一点响应,希望它能起到更多的帮助。
SELECT /*products in cart*/
prodotti.nome_prodotto
,carrello.quantita
FROM
prodotti
INNER JOIN carrello
ON prodotti.id_prodotto = carrello.id_prodotto
LEFT JOIN acquisto
ON acquisto.id_prodotto = carrello.id_prodotto
WHERE
/* show only items over a certain age - 5 days in this example */
DATEDIFF((ifnull(acquisto.id_acquisto,NOW()) /* use today's date if purchase doesn't exist */
- carrello.id_acquisto) > 5)