我叫2個表:1)產品2)product_images和它的數據是這樣的:爲什麼mysqli左連接返回1多行?
products table :
==============
ProductID Title model_number
-----------------------------------
1 title1 123
2 title2 124
3 title3 125
4 title4 126
5 title5 127
product_images
==============
pi_id p_id product_image
------------------------------
1 1 image1
2 2 image2
3 3 image3
4 4 image4
5 1 image1
所以如果我運行此查詢它的返回5行,這是正確的:
$q=mysqli_query($conn, "SELECT * FROM products");
echo $n=mysqli_num_rows($q); // return 5 rows
但如果我運行這個查詢,它會返回6行,爲什麼?它應該顯示5行!
$searchQuery = mysqli_query($conn, "SELECT products.ProductID,
products.Title, products.model_number, product_images.product_image FROM
products LEFT JOIN product_images ON products.ProductID =
product_images.p_id ");
$isExist = mysqli_num_rows($searchQuery); // return 6 rows
你能告訴我爲什麼它會返回1行以及如何解決它?謝謝。
其實我想用適當的圖像顯示所有產品。
由於使用'LEFT JOIN'和'product_images'表,你有兩個圖像用於同一產品(p_id = 1) – sergio
如果在第二個表中不存在外鍵,則在左連接中,請閱讀左邊的連接:-http://www.w3schools.com/sql/sql_join_left.asp – rahul
我想用適當的圖像顯示所有產品。所以如果它返回多一行,那麼用戶將不會獲得實際的數據數量。所以我需要顯示正確數量的數據。我怎樣才能做到這一點 ? –