0
[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       |
 +----------+------------+

以下のクエリを使用しています。jack が TABLE2 のユーザーをフォローしている場合、または jack が TABLE 1 のユーザー名をフォローしている場合、TABLE1 のすべてのレコードが表示されます。

 SELECT t1.* 
 FROM TABLE1 t1 
 INNER JOIN table2 t2 
 ON t1.username = t2.following 
 AND (t2.username = 'jack' OR t1.username = 'jack');

今、私はそれを行い、TABLE3でLIKESFRUITをジャックした場合にTABLE1からレコードを表示したいと考えています。

4

3 に答える 3

0
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';
于 2012-07-23T14:39:17.373 に答える
0
 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)
;

「TABLE1のレコードを表示する」とはどういう意味ですか

于 2012-07-23T11:28:25.350 に答える
0

これを試して

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)
于 2012-07-23T11:31:09.433 に答える