2013-06-18 71 views
0

結合我有一個SQL語句是這樣的:`ORDER BY`和`LIMIT`與`JOIN`

$sql = "SELECT *, films.category AS filmCategory FROM films LEFT OUTER JOIN items ON items.unique = films.ref ORDER BY unique ASC LIMIT 0, 4"; 

不起作用。它的工作原理沒有ORDER BYLIMIT部分,像這樣:

$sql = "SELECT *, films.category AS filmCategory FROM films LEFT OUTER JOIN items ON items.unique = films.ref"; 

我似乎無法找到添加ORDER BYLIMIT得到僅從films表中的第4項的方式。之後,加入的部分只能從另一個表中獲得這四個項目的更多信息。它是如何以正確的方式完成的?

+0

LIMIT子句適用於整個查詢,而不僅僅是'films'表。如果你想限制那張表,你必須使用子查詢。 – Barmar

回答

2

如果你想限制一個特定的表,你必須使用子查詢。

SELECT *, films.category AS filmCategory 
FROM (SELECT * 
     FROM films 
     ORDER BY ref ASC 
     LIMIT 4) films 
LEFT OUTER JOIN items 
ON items.`unique` = films.ref 
ORDER BY `unique` ASC 
+0

謝謝。儘管如此,我無法完成這項工作。爲什麼在「括號」後面再寫一次「電影」? – Steeven

+0

@Steeven。 。 。這是子查詢的別名。它使用與表格相同的名稱,因此查詢的其餘部分中的引用不必更改。 –

+0

我可以讓你的代碼工作,如果我刪除最後一句'ORDER BY'唯一'ASC'。奇怪的是它不適用於這條線。 「電影」和「物品」這兩個表都有獨特的色彩。 – Steeven