[英]Select Multiple Rows From Same Table
我有兩個表“ book ”和“ category ”。 如何顯示“書”表中的所有行? 注意, category(書表)和cat_name(category表 )之間存在聯接 。
書桌
id category title
1 2 a title here
2 2 a title here
3 1 a title here
4 Comedy a title here
5 1 a title here
6 Horror a title here
類別表
id cat_name
---- -------
1 Language
2 Kids
當前,我正在使用以下sql查詢,它似乎僅顯示具有類別編號的行,而我想要所有數據。 目前,我的html表未顯示第4行和第6行。
SELECT b.id, b.title, b.category, b.author, b.isbn, b.publicationYear,
c.cat_name
FROM book AS b
INNER JOIN category AS c ON b.category = c.id
我的PHP樣本
echo '<td>' . $row['id'] . '</td>';
echo '<td>' . $row['title'] . '</td>';
echo '<td>' . $row['cat_name'] . '</td>';
echo '<td>' . $row['author'] . '</td>';
echo '<td>' . $row['isbn'] . '</td>';
對php / mysql來說是相當新的,因此任何建議或指導都值得贊賞。
您正在執行inner join
,這將僅返回匹配項。 如果您希望左表中的所有項目使用left join
SELECT b.id,
b.title,
b.category,
b.author,
b.isbn,
b.publicationYear,
c.cat_name
FROM book AS b
left JOIN
category AS c
ON
b.category = c.id
更新:
如果左cat_name
與category
表不匹配,則cat_name
顯示為null
解決方法是
SELECT
b.id,
b.title,
b.category,
b.author,
b.isbn,
b.publicationYear,
case
when cast(b.category as unsigned)= 0 then b.category
else c.cat_name
end as cat_name
FROM book AS b
left JOIN category AS c ON b.category = c.id
嘗試與此,我認為它解決了您的問題
SELECT b.id,
b.title,
b.category,
b.author,
b.isbn,
b.publicationYear,
c.cat_name
FROM book AS b , category AS c
WHERE b.category = c.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.