2011-09-06 52 views
0

我有一個表job_to_universities與領域的MySQL查詢取景橫跨兩個表

id univ_id post_id 
1  2  3 
2  3  3 
3  5  5 
4  1  8 
5  2  8 

我與田

id(post_id) is_public 
1    1 
2    0 
3    1 
4    1 
5    1 
6    0 
7    0 
8    0 

說爲5的大學ID我想另一個表job_postings從job_postings表中獲取所有作業以及job_postings表中具有is_public 1的作業,並且我堅持這一點。

回答

1

如果我理解正確的話,你希望得到是公開和相關的大學所有招聘信息。這將意味着一個相當簡單的加入:

SELECT ... FROM job_postings NATURAL JOIN job_to_universities 
WHERE univ_id = ? AND is_public = 1 

如果您希望得到那些公開或涉及到大學的所有招聘信息,你可以寫的線沿線的東西:

SELECT ... FROM job_postings WHERE is_public = 1 
OR post_id IN (SELECT post_id FROM job_to_universities WHERE univ_id = ?) 

或者使用UNION DISTINCT

SELECT ... FROM job_postings WHERE is_public = 1 
UNION DISTINCT 
SELECT ... FROM job_postings NATURAL JOIN job_to_universities 
WHERE univ_id = ? 
0

類似:

SELECT b.id FROM job_to_universities a , job_postings b 
WHERE a.post_id = b.id AND b.is_public = 1 AND a.univ_id = 5 
1
SELECT jp.post_id 
FROM job_postings jp, job_to_universities ju 
WHERE jp.id = ju.post_id AND ju.univ_id = 5 AND jp.is_public = 1 
0

試試這個:

SELECT * 
    FROM job_postings b 
WHERE 
    (
     id IN (SELECT post_id FROM job_to_universities WHERE univ_id = 5) 
     OR 
     is_public = 1 
    )