2010-08-04 75 views
0

我有一個小問題,在MySQL的聲明如下:輸出SQL語句進行分組

SELECT cmfilm.*, cmgenre.titel AS genretitel, cmvertoning.*, cmzaal.titel AS zaaltitel 
FROM cmfilm 
     LEFT JOIN cmvertoning ON cmvertoning.film_id=cmfilm.id 
     LEFT JOIN cmgenre ON cmfilm.genre_id=cmgenre.id 
     LEFT JOIN cmzaal ON cmvertoning.zaal_id=cmzaal.id 
WHERE cmvertoning.id IN(74,74,74,74) 
ORDER BY cmfilm.id ASC 

,因爲我是在問同一個ID爲4次,只給我1分的結果。但我希望將結果返回4次,正如我要求的那樣。誰知道如何解決這個問題?

+0

你總是可以做 'query union all query union all query union all query' – 2010-08-04 14:57:54

+0

雖然這有點奇怪。 (爲什麼)你(真的)想要4個相同的結果? (這是你會得到的)。如果這是因爲您期待4個不同的行(基於鏈接到您的主表的表),則您的查詢將需要更改。 – Tobiasopdenbrouw 2010-08-04 14:59:52

+0

您確定要在您的WHERE子句中使用cmvertoning.id而不是cmvertoning.film_id或cmvertoning.zaal_id? – Zaki 2010-08-04 15:05:42

回答

1

也許在應用程序端實現這一點會更好 - 將返回的行放入地圖中,然後遍歷所需的ID並從地圖獲取適當的行。因爲還有另外一個問題 - 行可能不是按照您指定ID的順序排列的順序(順便說一句,此行排序問題也可以使用field來解決)。

UNION解決方案也可以工作。但是,說實話,如果你需要多次讀取相同的行,我認爲你有一些設計問題。

1

你沒有要求4行,你問任何行id是74,74,74或74 - 其中只有一行。

真正的問題是,你爲什麼要同一行4次?

0

我不認爲你可以在沒有某種循環或使用UNION ALL語句的情況下做到這一點。