【发布时间】:2011-08-03 06:51:46
【问题描述】:
作为 MySQL-Noob,我正在努力解决以下任务:假设 3 个表:locationgroceries 和 person,具有以下属性:
- 每个表都有一个主要的自动递增整数 id 和一个 varchar 列。
- 表中的条目都是唯一的。
-
groceries中的每个条目都有一个person中条目的外键。 -
groceries中的多个条目可能共享同一个外键。 - (3) 和 (4) 也适用于
person和location
所以我们有一个多对一对多的关系。如何选择每个三重 (groceries_product, person_name, location_name),其中 person_name 不出现多次?
例子:
tables: groceries | person | location
------------------------------------ ------------- -------------------------
columns: id product person_id | id name | id name person_id
------------------------------------ ------------- -------------------------
1 hamburger 1 | 1 Peter | 1 home 1
2 cheeseburger 1 | 2 Tom | 2 work 1
3 carot 1 | | 3 zoo 2
4 potatoe 1 | |
5 mango 2 | |
您可以创建的所有出现Peter 的三元组都无关紧要。我只想要像 (mango, Tom, zoo) 这样的三元组,因为 Tom 在所有可能性中只出现一次。我希望我的问题是可以理解的。 :-)
【问题讨论】:
-
如果你给这些表名和列名就好了。 10 次中有 9 次,在提出问题时将真正的问题简化为微不足道的假问题,但你并没有得到真正问题的正确答案。
-
@Dan Grossman:我试图改进这个问题。这样更好吗?
-
@丹·格罗斯曼。我做到了。我认为您建议更改问题以提高可读性。