Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 食物选择查询_Sql_Database_Oracle Sqldeveloper - Fatal编程技术网

Sql 食物选择查询

Sql 食物选择查询,sql,database,oracle-sqldeveloper,Sql,Database,Oracle Sqldeveloper,我有一个餐桌上的食物,它有以下限制 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

我有一个餐桌上的食物,它有以下限制

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
如果category1和category2放在同一张桌子上,那么这些盘子将被扔掉。 我需要输出在同一个桌面上的盘子的名称No,这样就有可能两者都会被丢弃。需要帮忙吗

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,这是一个非常糟糕的做法。 添加ID、索引并加入它们。

尝试此查询

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) ;
选择不同的a.名称作为Dish1,b.名称作为Dish2
从食物a到食物b再到食物c
其中a.Name b.Name和a.Deskno=b.Deskno和
(a.类别=c.类别1和c.类别2=b.类别);
一个自动连接,用于比较同一张桌子和一次性桌子上的盘子

拨弄 食物

名称(其中包含菜名) 类别(菜名) DeskNo(放置它的表)

食物: 名称类别桌面编号 墨西哥面食1 中国面条1 弗里德里斯中文2
Tamarindrice Indian 2

你能提供几行样本数据和查询所需的输出吗?如果印度-中国的菜肴组合出现在同一张桌子上,那么就扔掉这道菜。我需要一些帮助来编写这个方法的查询。我犯了一个错误,在我的查询中只选择了一个名称,我得到了部分输出。现在可以了,谢谢如果您需要可能发生抛掷的桌子号码,请尝试上面的方法。
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