[英]MySQL INNER JOIN two tables where one table contains multiple rows with same id
我想從一個表中獲取ID,具體取決於另一個表中具有相同ID的行。 僅當另一個表中的所有行均與每個行請求匹配時,才必須返回ID。 我的表結構如下所示。
tbl_one ------------------ id companyName ------------------ 1 CompanyOne 2 CompanyTwo tbl_two ----------------------------- id type content ----------------------------- 1 zipcode 54321 1 category Car dealers 2 zipcode 54321 2 category Supermarkets
我已經嘗試使用INNER JOIN,但是無論如何嘗試,我似乎都無法使其正常工作。
SELECT tbl_one.id FROM tbl_one INNER JOIN tbl_two ON tbl_two.id = tbl_one.id WHERE ( type = 'zipcode' AND content = '54321' ) AND ( type = 'category' AND content = 'Car dealers' )
有人可以回答我我的查詢問題嗎? 謝謝 :)
嗯..試試這個:-
/*
drop table tbl_one;
drop table tbl_two;
create table tbl_one(id int, companyName varchar(20)) ;
Insert into tbl_one values
(1, 'CompanyOne'),
(2, 'CompanyTwo') ;
create table tbl_two(id int,type varchar(20), content varchar(20));
insert into tbl_two values
(1 , 'zipcode' , '54321'),
(1 , 'category' , 'Car dealers'),
(2 , 'zipcode' , '54321'),
(2 , 'category' , 'Supermarkets');
*/
SELECT t1.*
FROM tbl_one t1
WHERE t1.id in (select t2.id from tbl_two t2 where t2.id = t1.id and t2.type = 'zipcode' AND t2.content = '54321')
and t1.id in (select t3.id from tbl_two t3 where t3.id = t1.id and t3.type = 'category' AND t3.content = 'Car dealers')
您提供的查詢不起作用,因為tbl_two.type不能同時等於“郵政編碼”和“類別”。 也許這就是你的意思? 請注意第7行的OR
運算符,而不是您使用AND
...
SELECT one.id
FROM tbl_one one
JOIN tbl_two two
ON two.id = one.id
WHERE
two.type = "zipcode" AND two.content = "54321"
OR two.type = "category" AND two.content = "car dealers"
或者,也許您想在54321中找到所有的汽車經銷商,在這種情況下,您將需要兩個聯接...
SELECT one.id
FROM tbl_one one
JOIN tbl_two one_zip
ON one_zip.id = one.id
AND one_zip.type = "zipcode"
AND one_zip.content = "54321"
JOIN tbl_two one_cat
ON one_cat.id = one.id
AND one_cat.type = "category"
AND one_cat.content = "car dealers"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.