[英]mysql inner join with another type of join required
[TABLE1]
+----------+-------------------+-------------+
| USERNAME | POST | FRUIT |
+----------+-------------------+-------------+
| Bob | 'Hi There' | APPLE |
| Jack | 'Hello' | ORANGE |
| Bob | 'Today is Monday' | APPLE |
| Tony | 'That is ok' | PEAR |
+----------+-------------------+-------------+
[TABLE2]
+----------+-----------+
| USERNAME | FOLLOWING |
+----------+-----------+
| Mike | Jack |
| Jack | Bob |
| Bob | Jack |
| Jack | Mike |
+----------+-----------+
[TABLE3]
+----------+----------- +
| USERNAME | LIKESFRUIT |
+----------+----------- +
| Mike | APPLE |
| Jack | ORANGE |
| Bob | BERRY |
| Jack | PEAR |
+----------+------------+
I am using the below query. 我正在使用以下查询。 It shows all records from TABLE1 if jack is following the user in TABLE2 or jack in the username in TABLE 1. 如果jack在TABLE2中跟随用户或在table 1的用户名中跟随jack,它将显示来自TABLE1的所有记录。
SELECT t1.*
FROM TABLE1 t1
INNER JOIN table2 t2
ON t1.username = t2.following
AND (t2.username = 'jack' OR t1.username = 'jack');
Now i want to do that AND to show records from TABLE1 if jack LIKESFRUIT in TABLE3. 现在,我想执行该操作并显示来自TABLE1的记录(如果TABLE3中的jack LIKESFRUIT)。
SELECT t1.*
FROM TABLE1 t1
INNER JOIN table2 t2
ON t1.username = t2.following
left join tablet3 t3 on t3.username = t1.username
AND (t2.username = 'jack' OR t1.username = 'jack')
AND (t3.username = 'jack' and t3.LIKESFRUIT <> '' and t3.LIKESFRUIT is not null)
;
Although I am not sure what do you mean by "show records from TABLE1" 尽管我不确定“显示TABLE1中的记录”是什么意思
try this 尝试这个
SELECT t1.*
FROM TABLE1 t1
INNER JOIN table2 t2
ON t1.username = t2.following
AND (t2.username = 'jack' OR t1.username = 'jack')
and exists(select * from TABLE3 t3 where t3.username=t1.username)
SELECT
username, post, fruit
FROM
TABLE1 t1
INNER JOIN
TABLE2 t2
ON
t1.username = t2.username
AND t1.username = t2.follwing
INNER JOIN
TABLE3 t3
ON
t3.LIKESFRUIT = t1.fruit
WHERE
t1.username = 'jack';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.