создание запроса mysql для двух таблиц - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть таблица job_to_universities с полями

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

У меня есть другая таблица job_postings с полями

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

скажем, для университетского идентификатора 5 я хочу получить всезадания из таблицы job_postings вместе с заданиями, у которых is_public равен 1 в таблице job_postings, и я застрял на этом.

Ответы [ 4 ]

1 голос
/ 06 сентября 2011
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
1 голос
/ 06 сентября 2011

Если я вас правильно понимаю, вы хотите, чтобы все вакансии были общедоступны и связаны с университетом.Это подразумевало бы довольно простое объединение:

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 голосов
/ 06 сентября 2011

Попробуйте это:

SELECT *
  FROM job_postings b
WHERE 
    (
        id IN (SELECT post_id FROM job_to_universities WHERE univ_id = 5)
        OR 
        is_public = 1
    )   
0 голосов
/ 06 сентября 2011

что-то вроде:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...