我的查詢:SQL GROUP BY和NULL值:如何將結果按非空值分組?
SELECT *,
contacts.createdAt AS contactcreatedAt,
contacts.updatedAt AS contactupdatedAt,
bidresponses.itemid AS bidresponseitemid,
bidresponses.personid AS bidresponsepersonid,
SUM(tagsitems.quantity) AS totalquantity
FROM items
LEFT OUTER JOIN tagsitems ON items.id = tagsitems.itemid
LEFT OUTER JOIN itemscontacts ON items.id = itemscontacts.itemid
LEFT OUTER JOIN contacts ON itemscontacts.contactid = contacts.id
LEFT OUTER JOIN bidresponses ON items.id = bidresponses.itemid AND itemscontacts.personid = bidresponses.personid
LEFT OUTER JOIN bidtemplatefields ON bidresponses.bidtemplatefieldid = bidtemplatefields.id
WHERE ((items.id = 70687 OR items.id = 70595) AND itemscontacts.relationship = 's') AND (items.deletedAt IS NULL)
GROUP BY items.id, tagsitems.itemid, bidresponses.personid, bidresponses.bidtemplatefieldid
ORDER BY items.id ASC
沒有SUM()和GROUP BY子句該查詢返回了預期的效果,減去重要totalquantity值。
目前困擾我的任務是構造GROUP BY子句,以便它「忽略」NULL或缺少來自bidresponses的值。數據是這樣的,結果將是一組混合的項目 - 有些在投標響應表中有條目,有些則沒有。
編輯: 我希望在bidresponses表中顯示空值的條目。使用當前的GROUP BY子句,它們不是。 我應該注意到,我使用分組的唯一原因是我可以得到總數量值。下面是查詢輸出的一個例子,而不的SUM()和GROUP BY子句:
+-------+------------+------+---------------------------+------+------------+-----------+-----------+---------------------+---------------------+-----------+----------+-------+--------+----------+--------+-----------+----------+---------------------+--------------+---------------+--------------+-----------+------------+------+-----------+----------+----------------+-----------------+---------------------+---------------------+-----------+----------+---------------------+---------------------+--------------------+--------+-------------+----------+------+------------------+-------------+---------------------+---------------------+-------------------+---------------------+
| id | itemtypeid | code | description | cost | unittypeid | projectid | companyid | createdAt | updatedAt | deletedAt | unittype | tagid | itemid | quantity | itemid | contactid | personid | sentdate | responsedate | bidtemplateid | relationship | awarddate | assigndate | id | companyid | personid | companyidOwner | parentContactid | createdAt | updatedAt | firstName | lastName | company | email | bidtemplatefieldid | itemid | bidresponse | personid | id | bidtemplatefield | fieldtypeid | contactcreatedAt | contactupdatedAt | bidresponseitemid | bidresponsepersonid |
+-------+------------+------+---------------------------+------+------------+-----------+-----------+---------------------+---------------------+-----------+----------+-------+--------+----------+--------+-----------+----------+---------------------+--------------+---------------+--------------+-----------+------------+------+-----------+----------+----------------+-----------------+---------------------+---------------------+-----------+----------+---------------------+---------------------+--------------------+--------+-------------+----------+------+------------------+-------------+---------------------+---------------------+-------------------+---------------------+
| 70595 | 1 | NULL | HD Banners | NULL | NULL | 7 | 1 | 2010-05-10 17:00:11 | 2010-08-14 18:57:41 | NULL | each | NULL | NULL | NULL | 70595 | 16 | 34789 | 2010-08-14 22:37:01 | NULL | 1 | s | NULL | NULL | 16 | NULL | NULL | 1 | NULL | 2010-08-05 18:40:01 | 2010-08-05 18:41:40 | NULL | NULL | sdf | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-05 18:40:01 | 2010-08-05 18:41:40 | NULL | NULL |
| 70595 | 1 | NULL | HD Banners | NULL | NULL | 7 | 1 | 2010-05-10 17:00:11 | 2010-08-14 18:57:41 | NULL | each | NULL | NULL | NULL | 70595 | 22 | 34794 | 2010-08-14 18:44:02 | NULL | 1 | s | NULL | NULL | 22 | NULL | 34794 | 1 | NULL | 2010-08-09 19:56:28 | 2010-08-10 13:55:03 | NULL | NULL | anewwwww | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-09 19:56:28 | 2010-08-10 13:55:03 | NULL | NULL |
| 70595 | 1 | NULL | HD Banners | NULL | NULL | 7 | 1 | 2010-05-10 17:00:11 | 2010-08-14 18:57:41 | NULL | each | NULL | NULL | NULL | 70595 | 27 | 34797 | 2010-08-14 22:36:59 | NULL | 1 | s | NULL | NULL | 27 | NULL | NULL | 1 | NULL | 2010-08-10 19:11:52 | NULL | NULL | NULL | [email protected] | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-10 19:11:52 | NULL | NULL | NULL |
| 70595 | 1 | NULL | HD Banners | NULL | NULL | 7 | 1 | 2010-05-10 17:00:11 | 2010-08-14 18:57:41 | NULL | each | NULL | NULL | NULL | 70595 | 28 | 34798 | 2010-08-14 22:37:00 | NULL | 1 | s | NULL | NULL | 28 | NULL | NULL | 1 | NULL | 2010-08-10 19:18:27 | NULL | NULL | NULL | [email protected] | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-10 19:18:27 | NULL | NULL | NULL |
| 70687 | 1 | NULL | Editing and adding labels | NULL | NULL | 7 | 1 | 2010-05-15 07:26:33 | 2010-08-14 18:55:48 | NULL | each | 12 | 70687 | NULL | 70687 | 16 | 34789 | 2010-08-14 22:37:01 | NULL | 1 | s | NULL | NULL | 16 | NULL | NULL | 1 | NULL | 2010-08-05 18:40:01 | 2010-08-05 18:41:40 | NULL | NULL | sdf | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-05 18:40:01 | 2010-08-05 18:41:40 | NULL | NULL |
| 70687 | 1 | NULL | Editing and adding labels | NULL | NULL | 7 | 1 | 2010-05-15 07:26:33 | 2010-08-14 18:55:48 | NULL | each | 2 | 70687 | NULL | 70687 | 16 | 34789 | 2010-08-14 22:37:01 | NULL | 1 | s | NULL | NULL | 16 | NULL | NULL | 1 | NULL | 2010-08-05 18:40:01 | 2010-08-05 18:41:40 | NULL | NULL | sdf | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-05 18:40:01 | 2010-08-05 18:41:40 | NULL | NULL |
| 70687 | 1 | NULL | Editing and adding labels | NULL | NULL | 7 | 1 | 2010-05-15 07:26:33 | 2010-08-14 18:55:48 | NULL | each | 12 | 70687 | NULL | 70687 | 27 | 34797 | 2010-08-14 22:36:59 | NULL | 1 | s | NULL | NULL | 27 | NULL | NULL | 1 | NULL | 2010-08-10 19:11:52 | NULL | NULL | NULL | [email protected] | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-10 19:11:52 | NULL | NULL | NULL |
| 70687 | 1 | NULL | Editing and adding labels | NULL | NULL | 7 | 1 | 2010-05-15 07:26:33 | 2010-08-14 18:55:48 | NULL | each | 2 | 70687 | NULL | 70687 | 27 | 34797 | 2010-08-14 22:36:59 | NULL | 1 | s | NULL | NULL | 27 | NULL | NULL | 1 | NULL | 2010-08-10 19:11:52 | NULL | NULL | NULL | [email protected] | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-10 19:11:52 | NULL | NULL | NULL |
| 70687 | 1 | NULL | Editing and adding labels | NULL | NULL | 7 | 1 | 2010-05-15 07:26:33 | 2010-08-14 18:55:48 | NULL | each | 12 | 70687 | NULL | 70687 | 28 | 34798 | 2010-08-14 22:37:00 | NULL | 1 | s | NULL | NULL | 28 | NULL | NULL | 1 | NULL | 2010-08-10 19:18:27 | NULL | NULL | NULL | [email protected] | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-10 19:18:27 | NULL | NULL | NULL |
| 70687 | 1 | NULL | Editing and adding labels | NULL | NULL | 7 | 1 | 2010-05-15 07:26:33 | 2010-08-14 18:55:48 | NULL | each | 2 | 70687 | NULL | 70687 | 28 | 34798 | 2010-08-14 22:37:00 | NULL | 1 | s | NULL | NULL | 28 | NULL | NULL | 1 | NULL | 2010-08-10 19:18:27 | NULL | NULL | NULL | [email protected] | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-10 19:18:27 | NULL | NULL | NULL |
+-------+------------+------+---------------------------+------+------------+-----------+-----------+---------------------+---------------------+-----------+----------+-------+--------+----------+--------+-----------+----------+---------------------+--------------+---------------+--------------+-----------+------------+------+-----------+----------+----------------+-----------------+---------------------+---------------------+-----------+----------+---------------------+---------------------+--------------------+--------+-------------+----------+------+------------------+-------------+---------------------+---------------------+-------------------+---------------------+
這裏是查詢輸出與一個例子的SUM()和GROUP BY子句:
+-------+------------+------+---------------------------+------+------------+-----------+-----------+---------------------+---------------------+-----------+----------+-------+--------+----------+--------+-----------+----------+---------------------+--------------+---------------+--------------+-----------+------------+------+-----------+----------+----------------+-----------------+---------------------+---------------------+-----------+----------+---------+----------------+--------------------+--------+-------------+----------+------+------------------+-------------+---------------------+---------------------+-------------------+---------------------+---------------+
| id | itemtypeid | code | description | cost | unittypeid | projectid | companyid | createdAt | updatedAt | deletedAt | unittype | tagid | itemid | quantity | itemid | contactid | personid | sentdate | responsedate | bidtemplateid | relationship | awarddate | assigndate | id | companyid | personid | companyidOwner | parentContactid | createdAt | updatedAt | firstName | lastName | company | email | bidtemplatefieldid | itemid | bidresponse | personid | id | bidtemplatefield | fieldtypeid | contactcreatedAt | contactupdatedAt | bidresponseitemid | bidresponsepersonid | totalquantity |
+-------+------------+------+---------------------------+------+------------+-----------+-----------+---------------------+---------------------+-----------+----------+-------+--------+----------+--------+-----------+----------+---------------------+--------------+---------------+--------------+-----------+------------+------+-----------+----------+----------------+-----------------+---------------------+---------------------+-----------+----------+---------+----------------+--------------------+--------+-------------+----------+------+------------------+-------------+---------------------+---------------------+-------------------+---------------------+---------------+
| 70595 | 1 | NULL | HD Banners | NULL | NULL | 7 | 1 | 2010-05-10 17:00:11 | 2010-08-14 18:57:41 | NULL | each | NULL | NULL | NULL | 70595 | 16 | 34789 | 2010-08-14 22:37:01 | NULL | 1 | s | NULL | NULL | 16 | NULL | NULL | 1 | NULL | 2010-08-05 18:40:01 | 2010-08-05 18:41:40 | NULL | NULL | sdf | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-05 18:40:01 | 2010-08-05 18:41:40 | NULL | NULL | NULL |
| 70687 | 1 | NULL | Editing and adding labels | NULL | NULL | 7 | 1 | 2010-05-15 07:26:33 | 2010-08-14 18:55:48 | NULL | each | 12 | 70687 | NULL | 70687 | 16 | 34789 | 2010-08-14 22:37:01 | NULL | 1 | s | NULL | NULL | 16 | NULL | NULL | 1 | NULL | 2010-08-05 18:40:01 | 2010-08-05 18:41:40 | NULL | NULL | sdf | [email protected] | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2010-08-05 18:40:01 | 2010-08-05 18:41:40 | NULL | NULL | NULL |
+-------+------------+------+---------------------------+------+------------+-----------+-----------+---------------------+---------------------+-----------+----------+-------+--------+----------+--------+-----------+----------+---------------------+--------------+---------------+--------------+-----------+------------+------+-----------+----------+----------------+-----------------+---------------------+---------------------+-----------+----------+---------+----------------+--------------------+--------+-------------+----------+------+------------------+-------------+---------------------+---------------------+-------------------+---------------------+---------------+
我不確定我是否完全理解你。您希望'bidresponseitemid'和'bidresponsepersonid'列中值爲NULL的結果行不顯示?或者他們沒有出現,你想要他們? 也許包含一個示例結果集(通過在控制檯/終端中使用mysql命令,您可以獲得很好的文本結果)並描述您想要改變的內容。 「WHERE'bidresponsepersonid'不是NULL」可能是你要找的東西。 – Thomas 2010-08-15 07:30:36
謝謝托馬斯。我會在上面澄清。 – 2010-08-15 07:31:35