使用Join从查找表中删除父记录

时间:2018-03-31 20:01:38

标签: mysql join

我遇到SqlFiddle挂起的问题,所以我会尝试用这里的表格来解释。

我有三张桌子:

  1. 订单
  2. 产品
  3. 查找表
  4. 查找表是必要的,因为我接收数据的方式因此我将其提取到包含OrderIDItemID

    的单项的表格中

    项目类型

    +----+----------+---------+ | 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两次只加入我:

    1. 单一儿童记录
    2. 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`

      1. 父记录
      2. 也许我一直在这方面工作的时间太长了,因为答案看起来很明显,本周我已经做了很多这些,但不知怎的,这个人正在逃避我。

        当SqlFiddle备份时,我会发布一个,以便更容易调试,中期的任何想法都会欣赏。

0 个答案:

没有答案