2013-04-30 53 views
0

你好我有这个查询我希望它也返回表j行(jobcard)其中j.articleId,j.statusId,j.hcwsId,j.gpId为null任何帮助PLZ ?MySql查询连接返回结果与空列

SELECT jobcardId,createDateTime,jobNo,companyId, 
         customerId,serialNo,rsvdDate,model,promiseDate, 
         readyDate,deliveryDate,cashMemoNo,dealer, 
         dop,status,warrantyCardno,batchNo, 
         employeeId,hcws,gp,cdId, 
         collectionDate,remarks,article 
       FROM jobcard j, articles a, statuses s, hcws h, gp g 
       WHERE j.articleId=a.articleId AND 
         j.statusId = s.statusId AND 
         j.hcwsId = h.hcwsId AND 
         j.gpId=g.gpId" 
+1

你的意思是'jobcard'有实际NULL值,或者你的意思,有没有对其他表中的行匹配? – Barmar 2013-04-30 15:48:24

+0

我的意思是我想要jobcard表中的所有行,即使他们r空。因为最初我不把id放在jobcard列(articleid,statusid ...)...它只返回这些列不为空的行 – 2013-04-30 15:52:15

+0

简单我想要记录其中j.articleId = a.articleId和j.articleId =从jobcard表中删除null – 2013-04-30 15:53:42

回答

1

你不是因为你的内部连接均不含它们的那些列越来越NULL值 - 他们不与其他表中的任何匹配。

要包含空值,使用OUTER JOIN

SELECT jobcardId,createDateTime,jobNo,companyId, 
    customerId,serialNo,rsvdDate,model,promiseDate, 
    readyDate,deliveryDate,cashMemoNo,dealer, 
    dop,status,warrantyCardno,batchNo, 
    employeeId,hcws,gp,cdId, 
    collectionDate,remarks,article 
FROM jobcard j 
LEFT OUTER JOIN articles a ON j.articleId=a.articleId 
LEFT OUTER JOIN statuses s ON j.statusId = s.statusId 
LEFT OUTER JOIN hcws h ON j.hcwsId = h.hcwsId 
LEFT OUTER JOIN gp g ON j.gpId=g.gpId 
+0

THANXXXXXXXXXXXXXXXXXX它workddd:D – 2013-04-30 15:59:05

+0

我应该知道这个:D thanxxxx(Y) – 2013-04-30 15:59:44

0

使用LEFT JOIN。您现在的查询有效地工作为INNER JOIN,排除没有匹配的行。使用LEFT JOIN,您将返回jobcard中的所有行,并在其中包含没有匹配记录的其他表中的列(如,jobcard包含该列的NULL)时返回NULL

SELECT jobcardId,createDateTime,jobNo,companyId, 
         customerId,serialNo,rsvdDate,model,promiseDate, 
         readyDate,deliveryDate,cashMemoNo,dealer, 
         dop,status,warrantyCardno,batchNo, 
         employeeId,hcws,gp,cdId, 
         collectionDate,remarks,article 
FROM 
    jobcard j 
    LEFT JOIN articles a on j.articleId=a.articleId 
    LEFT JOIN statuses s on j.statusId = s.statusId 
    LEFT JOIN hcws h j.hcwsId = h.hcwsId 
    LEFT JOIN gp g on j.gpId=g.gpId