簡體   English   中英

SQLite-在同一表中聯接行

[英]SQLite - Joining Rows in the same Table

我有一個包含以下各列的表格

ID - PersonID - OrderedID - PostageID - RecordDate - OperatorID

PersonID - Refers to a table cotaining firstname, secondname etc.
OrderedID - Refers to a table of items they can order.
PostageID -  is an enum.
RecordDate - Is the timedate they made the order.
OperatorID - is the phone operator who made the order.

如果當時有人同時訂購兩個或三個項目,則在表中輸入了兩行或三行,但PersonID,RecordDate和OperatorID相同。 有人可以同時訂購多達8件商品。

現在我有一個具有以下布局的結構。

Order:
First Name
Second Name
OrderedID 1 Name
OrderedID 1 Colour
OrderedID 1 Weight
OrderedID 2 Name
OrderedID 2 Colour
OrderedID 2 Weight
OrderedID 3 Name
OrderedID 3 Colour
OrderedID 3 Weight
OrderedID 4 Name
OrderedID 4 Colour
OrderedID 4 Weight
OrderedID 5 Name
OrderedID 5 Colour
OrderedID 5 Weight
OrderedID 6 Name
OrderedID 6 Colour
OrderedID 6 Weight
OrderedID 7 Name
OrderedID 7 Colour
OrderedID 7 Weight
OrderedID 8 Name
OrderedID 8 Colour
OrderedID 8 Weight
OrderDate
OrderUser

如果PersonID和RecordDate和OperatorID相同,我該如何構造一個sql查詢,以便合並表中的行,但可以提供OrderedID詳細信息的完整列表。

如果我的表“ TABLE”具有行“ VALUE”,“ CATEGORY”,則使用:

SELECT t1.VALUE AS CAT1,
       t2.VALUE AS CAT2,
FROM TABLE AS t1,
     TABLE AS t2
WHERE t1.CATEGORY='cat1'
      t2.CATEGORY='cat2'

所以你必須使用類似

SELECT p.f_name,
       p.s_name,
       o1.name,
       o1.color,
       o2.name,
       o2.color
  from Persons as p,
       table as t,
       Orders as o1,
       Orders as o2
 where t.PersonID = p.id
   and o1.id=t.OrderedID
   and o2.id=t.OrderedID
   and ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM