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に一緒になっている場合、それらの料理は捨てられません。同じDeskNoにある料理の名前を出力する必要があり、両方がThrownAwayに落ちる危険性があります。助けが要る

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

食べ物

Name(料理名のついたもの) category(料理名) DeskNo(置かれているテーブル)

食べ物: 名前 カテゴリー デスクノ パスタ メキシカン 1 ヌードル チャイニーズ 1 フライドライス チャイニーズ 2 タマリンドライス インド 2

于 2014-04-21T06:15:40.183 に答える
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 に参加するべきではありません。これは本当に悪い習慣です。ID、インデックスを追加し、それらを結合します。

于 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 に答える