[英]SELECT with UNION AND LEFT JOIN
嗨,大家好,我一直在嘗試對我的網站搜索工具進行此sql搜索查詢,它應該按相關性進行搜索和排序。 它在沒有左聯接的情況下工作,而我無法在左聯接的情況下工作。 這是SQL查詢。
SELECT bl_albums.*, bl_bands.name as bandname, bl_bands.id as bandid,
bl_bands.bandpage as bandpage, sum(relevance)
FROM bl_albums
LEFT JOIN(
SELECT bl_albums.*, bl_bands.name as bandname, bl_bands.id as bandid,
bl_bands.bandpage as bandpage,10 AS relevance
FROM bl_albums
WHERE bl_albums.name like 'Camera'
UNION
SELECT bl_albums.*, bl_bands.name as bandname, bl_bands.id as bandid,
bl_bands.bandpage as bandpage, 7 AS relevance
FROM bl_albums
WHERE bl_albums.name like 'Camera%'
UNION
SELECT bl_albums.*, bl_bands.name as bandname, bl_bands.id as bandid,
bl_bands.bandpage as bandpage, 5 AS relevance
FROM bl_albums
WHERE bl_albums.name like '%Camera'
UNION
SELECT bl_albums.*, bl_bands.name as bandname, bl_bands.id as bandid,
bl_bands.bandpage as bandpage, 2 AS relevance
FROM bl_albums
WHERE bl_albums.name like '%Camera%'
) bl_bands on bl_albums.bandid = bl_bands.id
GROUP BY bl_albums.name
ORDER BY relevance desc
所有表名均正確,所有列名均正確。
您名為“ bl_bands”的子查詢沒有bl_bands.id,因為所有的聯合聯接都不包括bl_bands表。 如果我對所有數據的假設正確,請嘗試將聯接添加到每個聯合:
SELECT
bl_albums.*,
bl_bands.name as bandname,
bl_bands.id as bandid,
bl_bands.bandpage as bandpage,
sum(relevance)
FROM
bl_albums
LEFT JOIN(
SELECT bl_albums.*, bl_bands.name as bandname, bl_bands.id as bandid,
bl_bands.bandpage as bandpage,10 AS relevance
FROM bl_albums
JOIN bl_bands ON bl_bands.id = bl_albums.bandid
WHERE bl_albums.name like 'Camera'
UNION
SELECT bl_albums.*, bl_bands.name as bandname, bl_bands.id as bandid,
bl_bands.bandpage as bandpage, 7 AS relevance
FROM bl_albums
JOIN bl_bands ON bl_bands.id = bl_albums.bandid
WHERE bl_albums.name like 'Camera%'
UNION
SELECT bl_albums.*, bl_bands.name as bandname, bl_bands.id as bandid,
bl_bands.bandpage as bandpage, 5 AS relevance
FROM bl_albums
JOIN bl_bands ON bl_bands.id = bl_albums.bandid
WHERE bl_albums.name like '%Camera'
UNION
SELECT bl_albums.*, bl_bands.name as bandname, bl_bands.id as bandid,
bl_bands.bandpage as bandpage, 2 AS relevance
FROM bl_albums
JOIN bl_bands ON bl_bands.id = bl_albums.bandid
WHERE bl_albums.name like '%Camera%'
) bl_bands ON bl_albums.bandid = bl_bands.id
GROUP BY bl_albums.name
ORDER BY relevance desc
看起來您可能已經復制/粘貼了一些SELECT語句/列名,但沒有添加需要獲得結果的聯接。
我認為此查詢從未奏效。 內部查詢沒有任何意義。 例如
SELECT bl_albums.*, bl_bands.name as bandname, bl_bands.id as bandid,
bl_bands.bandpage as bandpage,10 AS relevance
FROM bl_albums
WHERE bl_albums.name like 'Camera'
該查詢包括許多以bl_bands前綴的字段,但是該表未包含在from語句或聯接中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.