Мне нужна помощь с двумя утверждениями выбора с помощью соединения - PullRequest
0 голосов
/ 23 мая 2011

Вот два утверждения, которые я хочу в одном:

SELECT pictures.picture, users.fname, users.lname, users.email, users.phone
FROM users, pictures
WHERE users.userid = 1
AND pictures.userid = users.userid;

и

SELECT pictures.picture, users.fname, users.lname, posts.post, 'post' AS 
type
FROM users, posts, pictures
WHERE users.userid = posts.userid
AND posts.postid > 0
AND users.userid =1
AND pictures.userid = users.userid
GROUP BY time

Ранее я использовал оператор UNION, но в этом случае я не могу этого сделать, поскольку количество столбцов в этих двух операторах не совпадает.

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 23 мая 2011
SELECT p.picture, u.fname, u.lname, u.email, u.phone, p.post, 'post' AS type
FROM users u
LEFT JOIN posts p ON u.userid = p.userid
LEFT JOIN pictures pic ON pic.user_id = u.userid
WHERE u.userid = 1
GROUP BY time

Вы можете изменить LEFT JOIN на INNER JOIN, если вам нужны записи или рисунки в наборе результатов.

1 голос
/ 23 мая 2011
SELECT pictures.picture, users.fname, users.lname, posts.post, 
       'post' AS type, users.email, users.phone
FROM users 
INNER JOIN pictures ON users.userid = pictures.userid
INNER JOIN posts on users.userid = posts.userid
WHERE users.userid = 1
AND posts.postid > 0
GROUP BY time;
1 голос
/ 23 мая 2011

Вы можете использовать UNION, если ваши списки столбцов совпадают. Например:

SELECT pictures.picture, users.fname, users.lname, users.email, users.phone, NULL, NULL
FROM users, pictures
WHERE users.userid = 1
AND pictures.userid = users.userid
UNION ALL
SELECT pictures.picture, users.fname, users.lname, NULL, NULL, posts.post, 'post' AS 
type
FROM users, posts, pictures
WHERE users.userid = posts.userid
AND posts.postid > 0
AND users.userid =1
AND pictures.userid = users.userid
GROUP BY time
0 голосов
/ 23 мая 2011

Это может быть глупый вопрос, и я, возможно, чего-то не понимаю, но зачем вам два утверждения?

SELECT pictures.picture, users.fname, users.lname, 
FROM users, pictures
WHERE users.userid = 1
AND pictures.userid = users.userid;

SELECT pictures.picture, users.fname, users.lname, posts.post, 
    'post' AS type, users.email, users.phone
FROM users
LEFT JOIN posts ON (posts.userid = users.userid AND posts.postid > 0)
LEFT JOIN pictures (pictures.userid = users.userid)
WHERE users.userid =1
GROUP BY time

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...