让多列限定符,INNER JOIN和UNION一起工作

时间:2011-10-13 04:01:13

标签: mysql

我正在尝试从三个表中获取ID列表。

table_one
---------
| id | other_data |

table_two
---------
| this_id | user_id | time_qual |

table_three
---------
| this_id | second_qual |

我希望获得具有以下资格的table_one id列表:

  1. id的{​​{1}}
  2. 中也可以找到table_three this_id中的
  3. second_qual等于1
  4. {li> table_threethis_id等于table_two的{​​{1}}并且在同一行中,table_one的{​​{1}}等于php变量{该行中的{1}}和id等于1.
  5. 但也包括符合#1和#2条件的table_two,如果user_id的{​​{1}}并且php变量$user_id不是,则不包括#3在time_qual
  6. 同一行中找到

    这是我的尝试:

    id

    我猜测那里应该有一个table_one而且id会消除我想要的结果#4,但我不知道该怎么办。

    提前致谢!

1 个答案:

答案 0 :(得分:1)

尽我所能解析您的要求,我认为这就是答案。让我知道如果它错过了我可以修改:

SELECT t1.id
FROM table_three t3 
RIGHT JOIN table_one t1 
  ON t1.id=t3.this_id 
LEFT JOIN table_two t2 
  ON t1.id=t2.this_id 
WHERE (t3.this_id IS NOT NULL AND t3.second_qual=1) 
  AND ((t2.this_id IS NOT NULL AND t2.user_id=1 AND t2.time_qual=1) 
    OR t2.this_id IS NULL);