SQL查询显示组合两个表的数据行,但在其他表

时间:2017-01-04 08:54:18

标签: mysql sql

提前致谢。我正在使用mysql数据库。

我有三个表cartscourseschecks。我需要一行数据,它结合了购物车和课程表,不应该存在于检查表中,我从我的php函数和carts表status ='Completed'传递userid = $ id。这里的用户ID对于表格推车和支票都是相同的。

我已经编写了这个SQL查询

select c.* 
from carts c 
where NOT EXISTS (select 1 
                  FROM checks 
                  WHERE checks.order_id = c.order_id 
                  AND c.exam_id = checks.exam_id) 
AND c.userid = $id 
AND c.status ='Completed'

但这并没有显示考试名称,而是显示考试ID,因为我没有加入考试。所以我对此感到有些困惑

课程表:

id | name    |
1  | PMP     |
2  | CAPM    |
3  | Prince2 |

购物车表:

    id |userid | username | orderid             | exam_id |status
    1  |13     | Gautham  |437b310v671N888M6720 | 1       |Completed
    2  |13     | Gautham  |437b310v671N888M6720 | 2       |Completed
    3  |13     | Gautham  |437b310v671N888M6720 | 3       |Completed
    4  |14     | Rakesh   |678g310v671N888M6720 | 3       |Completed

检查表:

    id |userid | username | orderid             | exam_id |
    1  |13     | Gautham  |437b310v671N888M6720 | 1       |
    2  |13     | Gautham  |437b310v671N888M6720 | 2       |

我需要一个结合了购物车和课程表的输出,但数据不应该存在于检查表中,我从我的php函数传递userid = $ id并且购物车表状态='已完成':

1  |13     | Gautham  |437b310v671N888M6720 | Prince2  |Completed
2  |14     | Rakesh   |678g310v671N888M6720 | Prince2  |Completed

3 个答案:

答案 0 :(得分:1)

  

试着希望你能得到预期的结果。

     

如果您对此有任何疑问,可以免费敲我。

SELECT carts.id,carts.userid,carts.username,carts.orderid,carts.exam_id,carts.status,courses.name FROM carts,courses where carts.exam_id = courses.id and carts.status="Completed" and carts.id not in (SELECT exam_id FROM checks WHERE 1)

enter image description here

答案 1 :(得分:0)

SELECT * FROM COURSES JOIN CARTS
ON COURSES.ID=CARTS.ID WHERE CARTS.USERID NOT IN
(SELECT USERID FROM FROM CHECKS)

答案 2 :(得分:0)

试试这个:

GeoData