2013-07-01 61 views
0

我想通過一個rank列做LEFT JOIN然後排序我的顯示,也表明項目只有在qty列大於0MySQL的左連接用WHERE和大於

SELECT 
* 
FROM `product` 
LEFT JOIN `stock` 
ON `product`.`product_id`=`stock`.`pid` 
AND `qty` > 1 
ORDER BY `product`.`rank` ASC 

產品表

product_id 
name 
rank 
price 

表庫存

pid 
price_sale 
qty 

Product Table 

12, Pen, 2, 53.00 
13, Pen, 1, 58.00 
14, Pen, 3, 25.00 

Stock Table 

12, 10.00, 5 
13, 18.00, 15 

我的結果不顯示。

它應該顯示:

12, Pen, 2, 53.00, 12, 10.00, 5 
13, Pen, 1, 58.00, 13, 18.00, 15 
+0

替換'和'INNER JOIN' LEFT JOIN' 。 –

+0

SQL看起來應該起作用(但是沒有@ypercube的建議,它會爲庫存表列中的數量不大於1的行帶回空值)。什麼是列的數據類型? – Kickstart

+0

您不需要在結果集中提供'stock'表,即'SELECT * FROM products,s LEFT JOIN stock as s ON s.qty> 0 [...]'。另外,ORDER BY只能用於你特別要求的字段(product.rank)。 –

回答

3

使用下面的查詢

SELECT * FROM `product` 
LEFT JOIN `stock` 
ON `product`.`product_id`=`stock`.`pid` 
WHERE `stock`.`qty` > 0 
ORDER BY `product`.`rank` ASC 
1

的,應該是這樣一個WHERE:

SELECT * 
FROM `product` 
LEFT JOIN `stock` ON `product`.`product_id`=`stock`.`pid` 
WHERE `qty` > 1 
ORDER BY `product`.`rank` ASC