有沒有辦法做到在SQL
這個任務:集團通過模糊標準
有行李的名稱表及其權重,看起來像這樣
luggage_id | luggage_name | luggage_weight ------------+--------------+---------------- 1 | Tom | 2 2 | Kat | 3 3 | Lil | 4
的東西輸出中組,在重量差異,少於或完全是D單位。因此,如果d等於1,我們必須得到
1. Tom, Kat 2. Kat, Lil
,如果d等於2,我們必須得到
1. Tom, Kat, Lil
,如果d是0.5,我們得到
1. Tom 2. Kat 3. Lil
我試着使用交叉連接:
SELECT t1.luggage_name, t2.luggage_name
FROM Luggages t1, Luggages t2
WHERE ABS(t1.luggage_weight - t2.luggage_weight) <= 1
導致
luggage_name | luggage_name --------------+-------------- Tom | Tom Tom | Kat Kat | Tom Kat | Kat Kat | Lil Lil | Kat Lil | Lil
難道可以用SQL
來解決這個問題嗎?
EDIT
好了,是的,我們可以寫
SELECT t1.luggage_name, t2.luggage_name
FROM Luggages t1, Luggages t2
WHERE ABS(t1.luggage_weight - t2.luggage_weight) <= 1
AND t1.luggage_id < t2.luggage_id
那麼我們將得到
luggage_name | luggage_name --------------+-------------- Tom | Kat Kat | Lil
這意味着,湯姆與吉和吉組在組律。
但是,讓我們說我們有完全相同的權重
luggage_id | luggage_name | luggage_weight ------------+--------------+---------------- 1 | Tom | 1 2 | Kat | 1 3 | Lil | 1
表然後我們就會
luggage_name | luggage_name --------------+-------------- Tom | Kat Tom | Lil Kat | Lil
這意味着,湯姆與吉和莉莉這是正確的,但下一組Kat與Lil已經在第一組。我想過這個問題,並不知道如何解決它。如何只輸出不同的組?
這不會總是每組輸出一對嗎? – Oddthinking 2011-04-13 18:35:22
@Oddthinking:不,請嘗試使用SQL進行更新。 – gbn 2011-04-13 18:42:34
但還有一個問題是我在編輯中解釋的。 – alexanderkuk 2011-04-13 18:49:29