SQL-запрос для объединения столбцов в результате - PullRequest
1 голос
/ 28 ноября 2011

Я полный нуб SQL и понятия не имею, как использовать JOIN.Если бы кто-то мог помочь с этим запросом, было бы здорово.

У меня есть таблица questions, которая содержит два столбца: queid и que.Другая таблица options содержит соответствующие параметры для вопросов и содержит столбцы optionid, queid, option.

. Как мне сделать оператор SELECT, чтобы я мог присоединиться к обоимтаблицы вместе основаны на queid?

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

SELECT * from questions,options where queid=1

Ответы [ 5 ]

2 голосов
/ 28 ноября 2011
SELECT q.*,o.* FROM questions q 
JOIN options o ON  q.queid = o.queid
WHERE q.queid = 1
2 голосов
/ 28 ноября 2011

Может быть

SELECT * FROM questions q JOIN options o ON q.queid=o.queid WHERE q.queid=1
2 голосов
/ 28 ноября 2011

Вы должны попробовать это:

SELECT que.*, opt.* FROM questions que
INNER JOIN options opt ON que.queid = opt.queid
WHERE que.queid = 1

INNER JOIN загружает вопросы и варианты, имеющие хотя бы одну соответствующую запись в каждой таблице.

Если вам нужно получить все вопросы (даже те, у которых нет вариантов), вы можете использовать

SELECT que.*, opt.* FROM questions que
LEFT JOIN options opt ON que.queid = opt.queid
WHERE que.queid = 1

LEFT JOIN всегда загружает вопросы и, если у них есть варианты, их параметры тоже; если нет, вы получаете NULL для опций столбцов.

0 голосов
/ 28 ноября 2011

Вы можете объединить две связанные таблицы, используя общий столбец.

в вашем случае вы можете написать:

SELECT * FROM Questions as Q INNER JOIN Options O ON Q.queid=O.queid WHERE Q.quid=1

Вы также можете опустить часть where следующим образом:

 SELECT * FROM Questions as Q INNER JOIN Options O ON Q.queid=O.queid AND Q.quid=1

Существуют различные виды соединений:

ВНУТРЕННИЙ

OUTER (левый, правый, полный)

Под внутренним объединением вы подразумеваете, что возвращаются только записи, общие для обеих таблиц. При использовании внешнего соединения возвращаются все записи на заданной стороне плюс записи, имеющие соответствующие значения на другой стороне, в противном случае вместо значений на другой стороне вы получите нулевое значение.

0 голосов
/ 28 ноября 2011
SELECT *
FROM questions
JOIN options ON questions.queid = options.queid
WHERE questions.queid = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...