解释
我正在一家销售旅游和水疗中心的网上商店工作。我在一个页面上一起显示所有内容。
我需要选择什么?
1.所有水疗产品(基于" Spa"专栏),无条件。
2.所有有孩子即将到来的家长之旅。
含义
产品编号1,4,5。
为什么吗
产品6有一个孩子,但是从1999年开始。尽管产品1在2000年有一个孩子,但在2017年还有一个孩子。所有水疗产品都是默认选择的,没有条件。
我希望我尽可能清楚地提出问题。我很感激任何帮助,我的SQL非常糟糕。
答案 0 :(得分:1)
您的数据结构不是很好。真的,因为你有父母 - >儿童关系以及特殊类型,最好有三个表格,例如Product,ProductType和ProductItem或一些这样的命名法。父表包含ID,name和typeId(有一个标志限制你只有两种类型,你可以选择拥有更多)。您的子表包含ID,父ID,名称和日期。然后你可以简单地使用外键约束来链接这两个,并做一些简单的SQL来加入它,例如。
SELECT pt.Name, pi.Name, pi.Date from ProductItem pi
INNER JOIN Product p on p.id = pi.parentID
INNER JOIN ProductType pt on p.typeId = pt.id
WHERE pi.date > now() --The "Now" part depends on your RDBMS as it's different on different systems
AND pt.name = "TOUR"
UNION
SELECT pt.Name, p.Name, 'N/A' from Product p
INNER JOIN ProductType pt on pt.id = p.typeId
WHERE pt.name = "SPA"