[英]MYSQL - If a field is empty my Select statement with wp_usermeta returns zero rows. Why?
[英]Mysql query returns all rows. Why?
SELECT SQL_CALC_FOUND_ROWS o . * , titles.title AS title, categories.category AS category,
images.image AS image, urls.url AS url, descriptions.description AS description,
from_sites.from_site AS from_site, prices.price AS price
FROM oglasi AS o
LEFT JOIN titles ON o.title_id = titles.title_id
LEFT JOIN categories ON o.category_id = categories.category_id
LEFT JOIN images ON o.image_id = images.image_id
LEFT JOIN urls ON o.url_id = urls.url_id
LEFT JOIN descriptions ON o.description_id = descriptions.description_id
LEFT JOIN from_sites ON o.from_site_id = from_sites.from_site_id
LEFT JOIN prices ON o.price_id = prices.price_id
WHERE categories.category_id = "28"
OR categories.category_id = "29"
OR categories.category_id = "30"
OR categories.category_id = "31"
OR categories.category_id = "32"
OR categories.category_id = "33"
OR categories.category_id = "34"
OR categories.category_id = "35"
AND from_sites.from_site_id =7
ORDER BY o.izdvojen, titles.title ASC
唯一的問題是AND AND_sites.from_site_id = 7被忽略。 因此,它列出了所有站點的所有子類別。 但是,當我僅使用一個category_id和from_site_id嘗試相同的查詢時,它將按預期工作。
可以請人告訴我這是怎么了嗎?
您需要使用括號明確告訴MySQL首先要計算哪些子句。
嘗試這個:
WHERE (categories.category_id = "28"
OR categories.category_id = "29"
OR categories.category_id = "30"
OR categories.category_id = "31"
OR categories.category_id = "32"
OR categories.category_id = "33"
OR categories.category_id = "34"
OR categories.category_id = "35")
AND from_sites.from_site_id =7
或類似的東西,如果這不完全是您的意思。
嘗試使用括號來指示如何評估邏輯運算。
如果您想要的東西屬於任何列出的類別,並且除此之外,from_site_id = 7,那么您的where部分應如下所示:
WHERE (
categories.category_id = "28"
OR categories.category_id = "29"
OR categories.category_id = "30"
OR categories.category_id = "31"
OR categories.category_id = "32"
OR categories.category_id = "33"
OR categories.category_id = "34"
OR categories.category_id = "35"
)
AND from_sites.from_site_id =7
您當前的查詢是要返回的所有行,其中category_id = 28-34 OR來自類別35且fromSiteID = 7(因此,除categoryID 35以外的所有內容都將忽略fromSiteID條件)。
原始查詢中似乎不需要很多東西。 我可以建議一個簡化版本嗎?
SELECT title, category, image, url, description, from_site, price
FROM oglasi
LEFT JOIN titles USING (title_id)
LEFT JOIN categories USING (category_id)
LEFT JOIN images USING (image_id)
LEFT JOIN urls USING (url_id)
LEFT JOIN descriptions USING (description_id)
LEFT JOIN from_sites USING (from_site_id)
LEFT JOIN prices USING (price_id)
WHERE category_id IN (28,29,30,31,32,33,34,35) AND from_site_id =7
ORDER BY izdvojen, title
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.