2014-12-04 8 views
-5

У меня есть 5 таблиц. А именно user, reference_1, reference_2, reference_3 и questionОбъедините несколько запросов sql/mysql в одном запросе

user => (user_id,user_name,user_emailid,user_mobno) 
reference_1 => (ref_id_1,user_id,ref_name,ref_email,ref_mobno) 
reference_2 => (ref_id_2,user_id,ref_name,ref_email,ref_mobno) 
reference_3 => (ref_id_3,user_id,ref_name,ref_email,ref_mobno) 
question => (que_id,user_id,ref_id_1,ref_id_2,ref_id_3,que1_name,que2_name,que3_name,que4_name,que5_name,que6a_name,que6b_name,que7_name,qa1,qa2,qa3,qa4,qa5,qa6a,qa6b,qa7,flag) 

я запустил 4 последовательных запросов:

Запрос 1: Получение данных из user таблицы и question с использованием LEFT JOIN

select u.user_name,u.user_emailid,u.user_mobno, 
    q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q.que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7 
from user u 
LEFT JOIN question q 
on u.user_id = q.user_id 
WHERE q.flag = 1 

Запрос 2: выборка данных из таблицы user и reference_1 с использованием LEFT JOIN

select r1.ref_name,r1.ref_email,r1.ref_mobno, 
    q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q.que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7 
from reference_1 r1 
left join question q 
on r1.ref_id_1 = q.ref_id_1 

Запрос 3: Получение данных из user таблицы и reference_2 с помощью LEFT JOIN

select r2.ref_name,r2.ref_email,r2.ref_mobno, 
    q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q.que6a_nam e,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7 
from reference_2 r2 
left join question q 
on r2.ref_id_2 = q.ref_id_2 

Запрос 4: Получение данных из user таблицы и reference_3 с помощью LEFT JOIN

select r3.ref_name,r3.ref_email,r3.ref_mobno, 
    q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q.que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7 
from reference_3 r3 
left join question q 
on r3.ref_id_3 = q.ref_id_3 

Теперь необходимо объединить все 4 запроса в одном, чтобы показать данные.

Я пытался РЕГИСТРИРУЙТЕСЬ все эти вопросы в одном запросе

select u.user_name,u.user_emailid,u.user_mobno, 

q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q.que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7, 

r1.ref_name,r1.ref_email,r1.ref_mobno, q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q.que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7, 

r2.ref_name,r2.ref_email,r2.ref_mobno, q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q.que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7, 

r3.ref_name,r3.ref_email,r3.ref_mobno, q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q.que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7 

from user u 
LEFT JOIN question q 
on u.user_id = q.user_id 
WHERE q.flag = 1 
LEFT JOIN reference_1 r1 
LEFT JOIN question q1 
on r1.ref_id_1 = q1.ref_id_1 
LEFT JOIN reference_2 r2 
LEFT JOIN question q2 
on r2.ref_id_2 = q2.ref_id_2 
LEFT JOIN reference_3 r3 
LEFT JOIN question q3 
on r3.ref_id_3 = q3.ref_id_3 

Но этот запрос не работает.

+0

одна проблема очевидна 'WHERE q.flag = 1' и должна быть в конце. –

+0

На самом деле это решение :) вы должны разместить его как ответ;) –

+0

Abhik Chakraborty no его не работает. Я получаю ошибку # 1064 в вашем синтаксисе sql – Atiq

ответ

1

Потому что вы ввинчиваетесь порядок синтаксиса ...

несколько присоединиться как это работает:

select u.user_name,u.user_emailid,u.user_mobno,  q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q. que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7, 

r1.ref_name,r1.ref_email,r1.ref_mobno, q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q. que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7, 

r2.ref_name,r2.ref_email,r2.ref_mobno, q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q. que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7, 

r3.ref_name,r3.ref_email,r3.ref_mobno, q.que1_name,q.qa1,q.que2_name,q.qa2,q.que3_name,q.qa3,q.que4_name,q.qa4,q.que5_name,q.qa5,q. que6a_name,q.qa6a,q.que6b_name,q.qa6b,q.que7_name,q.qa7 

from question q 
LEFT JOIN user u USING(user_id) 
LEFT JOIN reference_1 r1 USING(ref_id_1) 
LEFT JOIN reference_2 r2 USING(ref_id_2) 
LEFT JOIN reference_3 r3 USING(ref_id_3) 
WHERE q.flag = 1 

Где должен быть в конце ... присоединяется должен быть указан полностью и не может быть смешан. Заказы на работу зависимостей могут быть зависимыми от sub и subsub и так далее без проблем.

Одна вещь, которую вы сделали довольно хорошо: вы настраиваете одинаковое имя для внешнего ключа в обеих таблицах JOIN. В этом случае вы можете просто заменить r1.t1 = r2.t2 и просто определить таблицу соединений в функции USING (t1). :)

+0

Steini Я не могу найти какое-либо из ref_name, ref_email, ref_mobno, используя этот запрос – Atiq

+0

Steini Я не могу извлечь ссылки reference_1, reference_2 и reference_3 с использованием запроса и спасибо за указание использовать функцию USING() – Atiq

0

Попробуйте этот запрос. Использует вложенное соединение в справочные таблицы в таблицу вопросов.

SELECT u.user_name 
    ,u.user_emailid 
    ,u.user_mobno 
    ,q.que1_name 
    ,q.qa1 
    ,q.que2_name 
    ,q.qa2 
    ,q.que3_name 
    ,q.qa3 
    ,q.que4_name 
    ,q.qa4 
    ,q.que5_name 
    ,q.qa5 
    ,q.que6a_name 
    ,q.qa6a 
    ,q.que6b_name 
    ,q.qa6b 
    ,q.que7_name 
    ,q.qa7 
    ,r1.ref_name 
    ,r1.ref_email 
    ,r1.ref_mobno 
    ,r2.ref_name 
    ,r2.ref_email 
    ,r2.ref_mobno 
    ,q.que1_name 
    ,r3.ref_name 
    ,r3.ref_email 
    ,r3.ref_mobno 
FROM dbo.user u 
LEFT JOIN question q 
LEFT JOIN reference_1 r1 ON r1.ref_id_1 = q.ref_id_1 
LEFT JOIN reference_2 r2 ON r2.ref_id_2 = q.ref_id_2 
LEFT JOIN reference_3 r3 ON r3.ref_id_3 = q.ref_id_3 ON u.user_id = q.user_id 
WHERE q.flag = 1 
+0

BS123 запрос не работает , Пожалуйста, проверьте мой вопрос. – Atiq

Смежные вопросы