2015-10-15 39 views
0

存在我有兩個表:categoriesprodvscats檢查是否匹配的記錄在連接表

categories    prodvscats 

    id   |  id  
    title   |  categories_id 

每個表都有例如一些行:

categories    prodvscats 

    categ1   |  categ1  
    categ2   |  categ2 
    categ3 
    categ4 

我想回到所有類別,但我想知道prodvscats表中有哪些存在。

期望的結果:

title    boolean variable exists 
    categ1   |  1  
    categ2   |  1 
    categ3   |  0 
    categ4   |  0 

我試着用join但它只返回前兩排。也許它需要像案例一樣的東西,但我不知道該怎麼做。

SELECT categories.id, categories.title 
FROM categories 
     INNER JOIN prodvscats ON prodvscats.categories_id = categories.id 
ORDER BY id 

回答

1

使用LEFT JOIN加入這兩個表。這將返回所有行,包括其他表中不存在類別的行。然後用GROUP BY鞏固類別和COUNT,以確定是否匹配(ES)存在:

SELECT 
    categories.id, 
    categories.title, 
    CASE WHEN COUNT(prodvscats.id) = 0 THEN 0 ELSE 1 END AS product_exists 
FROM categories 
LEFT JOIN prodvscats ON categories.id = prodvscats.categories_id 
GROUP BY categories.id, categories.title 
1

嘗試這樣

SELECT categories.id, categories.title, 
IF(prodvscats.categories_id IS NULL, '0', '1') AS exists_value 
FROM categories 
LEFT JOIN prodvscats ON prodvscats.categories_id = categories.id 
ORDER BY id