我遇到SqlFiddle
挂起的问题,所以我会尝试用这里的表格来解释。
我有三张桌子:
查找表是必要的,因为我接收数据的方式因此我将其提取到包含OrderID
和ItemID
项目类型
+----+----------+---------+
| ID | ParentID | Name |
+----+----------+---------+
| 1 | NULL | Clothes |
| 2 | 1 | Shirts |
| 3 | NULL | Food |
| 4 | 3 | Steak |
+----+----------+---------+
订单
+----+---------+--------+
| ID | OrderID | ItemID |
+----+---------+--------+
| 1 | 1 | 1,2,3 |
| 2 | 2 | 1,3 |
+----+---------+--------+
查找表
+----+---------+--------+
| ID | OrderID | ItemID |
+----+---------+--------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 1 |
| 4 | 2 | 3 |
+----+---------+--------+
我现在想要进行连接,抓取每个订单的所有项目名称,但如果存在“子项目”,我不想要“父项”(例如,如果订单有Clothes
和{{ 1}}我不想要Shirts
。
我不确定为什么这个选择/删除查询对我有挑战性,因为我已经完成了很多这些但是由于某种原因它正在逃避我。
我做的任何Clothes
,即使我加入Joins
表格中的任何一个/ Item Types
表格,或Look-up Table
两次只加入我:
Select L.ID,S.ID,S.ParentID from
查找表L
Inner Join Orders O
On L.OrderID=O.ID
Inner Join
项目类型S
On L.ItemID=S.ID
Inner Join
项目类型S2
在S.ParentID = S2.ID`
也许我一直在这方面工作的时间太长了,因为答案看起来很明显,本周我已经做了很多这些,但不知怎的,这个人正在逃避我。
当SqlFiddle备份时,我会发布一个,以便更容易调试,中期的任何想法都会欣赏。