1

我有一种餐桌食品,它有以下限制

Food

Name(which has the dish name)
category (cuisine name)
DeskNo(The table that it is placed on)


Food:
Name         Category     Deskno
pasta        Mexican         1
noodles      Chines          1
friedrice    Chinese         2
Tamarindrice Indian          2

我有一个直通表

ThroughAway

category1
category2

ThrowAway
Category1      Category2
Indian         Chinese
Mexican        Indian

如果第 1 类和第 2 类放在同一张桌子上,这些菜就会被扔掉。我需要输出在同一个 DeskNo 中的菜的名称,并且两者都有可能落入 ThrowAway 的危险。需要一些帮助

4

4 回答 4

2

试试这个查询

SELECT Distinct a.Name AS Dish1, b.Name As Dish2
FROM Food a, Food b, ThroughAway c
WHERE a.Name <> b.Name AND a.Deskno = b.deskno AND 
(a.category = c.category1 AND c.category2 = b.category) ;

自连接比较同桌菜品和扔掉桌菜

小提琴 http://sqlfiddle.com/#!2/0893e6/7

于 2013-03-05T06:14:31.860 回答
0
select f1.name, f2.name from ThrowAway t
inner join Food f1 on f1.Category = t.Category1
inner join Food f2 on f2.Category = t.Category2
where f1.deskno = f2.deskno

但是你不应该像那样加入 varchar 或 smth,这是一个非常糟糕的做法。添加 ids、索引并加入它们。

于 2013-03-05T06:12:45.593 回答
0
SELECT FOOD.DESKNO
FROM   FOOD INNER JOIN
THROW ON FOOD.CATEGORY = THROW.CAT1 INNER JOIN
THROW AS THROW_1 ON FOOD.CATEGORY = THROW_1.CAT2
于 2013-03-05T06:35:35.540 回答
0

食物

Name(有菜名) category(菜名) DeskNo(放的桌子)

食物: 名称 类别 Deskno 意大利面 墨西哥 1 面条 中国 1 炒饭 中国 2 罗望子 印度 2

于 2014-04-21T06:15:40.183 回答