2

この時点で、3 つのテーブル間でマッチングを実行するシステムを実装しています。次の 3 つのテーブルがあるとします。

表1:名称と項目の関係

User        Item
=====================
John Doe    Apple
John Doe    Orange
John Doe    Cat
John Doe    Dog
John Doe    Fish
Anna Sue    Apple
Anna Sue    Orange
Robinson    Banana
Robinson    Vessel
Robinson    Car


表2: アイテムを分類するには

Item Type   Item
==================
Fruit       Apple
Fruit       Orange
Fruit       Banana
Animal      Cat
Animal      Dog
Vehicle     Vessel
Vehicle     Car
Vehicle     Truck


表3: アイテムのマッチング

Match ID    Item Type
======================
M001        Fruit
M001        Animal
M002        Fruit
M002        Vehicle


指定された一致ID完全に一致するすべての基準を 持つすべてのユーザーのみを表示するにはどうすればよいかを尋ねたいだけです
。次の形式で:

User            Match ID    Item Type   Item
================================================
John Doe        M001        Fruit       Apple
John Doe        M001        Fruit       Orange
John Doe        M001        Animal      Cat
John Doe        M001        Animal      Dog
Robinson        M002        Fruit       Banana
Robinson        M002        Vehicle     Vessel
Robinson        M002        Vehicle     Car

すべてのソリューションは高く評価されているため、ご協力いただきありがとうございます。

4

5 に答える 5

0

MySQL の場合

フィドル

select t1.User,t3.MatchID,t3.ItemType as ItemType,t2.Item as Item 
from Table1 t1
inner join Table2 t2 on t1.Item = t2.Item
inner join Table3 t3 on t3.ItemType = t2.ItemType
inner join
(select user,MatchID
from 
(SELECT GROUP_CONCAT(ItemType ORDER BY ItemType) AS typesTomatch , MatchID
FROM Table3 GROUP BY MatchID) abc
inner join
(Select a.User, group_concat(distinct b.ItemType ORDER BY b.ItemType)
as typesofpeople
from Table1 As a
inner join Table2 As b on a.Item = b.Item
group by a.User order by b.ItemType) def
on abc.typesTomatch = def.TYPESOFPEOPLE) xyz
on xyz.User = t1.User and xyz.MatchID = t3.MatchID;
于 2013-07-25T07:11:58.793 に答える
0

table3 に欠陥があります: 1 つのデータ ( fruit ) に対して 2 つの ID (itemtype が外部キーになると仮定)、そうでない場合、クエリは次のようになります。

select *
from table1 
   join table2 using (item)
   join table3 using (itemtype)

もちろん、仮定して

  1. itemtype はテーブル 2 の主キーです

  2. itemtype はテーブル 3 で、テーブル 2 への外部キーです。

  3. item はテーブル 1 であり、テーブル 2 への外部キーです。

于 2013-07-25T10:01:15.567 に答える
0

これを試して:

SELECT [User],  [Match ID], [Item Type],[Item]
From table1 
Inner join table2 on table1.item = table2.item
Inner join table3 on table2.[item type]= table3.[item type]
Where [User] = 'SOME USER NAME' AND table2.[item type] = 'SOME ITEM TYPE' AND table1.Item = 'SOME ITEM'
于 2013-07-25T05:04:31.820 に答える