2016-08-11 7 views
0

У меня есть три места для встреч, сервисов и поставщиков. Я хочу получить все столбцы из всех таблиц.Как выбрать * из трех таблиц?

Я попытался присоединиться к двум таблицам, но я получаю 1 запись 3 раза, получая дубликаты записей.

запроса:

SELECT venues.venueId,venues.venue_name,venues.latitude,venues.longitude,venues.active,services.serviceId,services.service_name,services.latitude,services.longitude,services.active FROM `venues`,`services` WHERE venues.vendorId = services.vendorId 

записей:

venueId 
venue_name 
latitude 
longitude 
active 
serviceId 
service_name 
latitude 
longitude 
active 
4 
siddhi hall 
-2.8437453 
23.3823545 
1 
1 
DJ siddhi 
1211 
4545 
1 
4 
siddhi hall 
-2.8437453 
23.3823545 
1 
2 
siddhi cateror 
0 
0 
1 
4 
siddhi hall 
-2.8437453 
23.3823545 
1 
3 
flowerist 
-10.4212157 
28.6031842 
1 
5 
siddhi cafe 
0 
0 
1 
1 
DJ siddhi 
1211 
4545 
1 
5 
siddhi cafe 
0 
0 
1 
2 
siddhi cateror 
0 
0 
1 
5 
siddhi cafe 
0 
0 
1 
3 
flowerist 
-10.4212157 
28.6031842 
1 
6 
siddhi cafe 
-1.899681 
22.72851 
1 
1 
DJ siddhi 
1211 
4545 
1 
6 
siddhi cafe 
-1.899681 
22.72851 
1 
2 
siddhi cateror 
0 
0 
1 
6 
siddhi cafe 
-1.899681 
22.72851 
1 
3 
flowerist 
-10.4212157 
28.6031842 
1 
7 
green lawn 
-10.4212157 
28.6031842 
1 
1 
DJ siddhi 
1211 
4545 
1 
7 
green lawn 
-10.4212157 
28.6031842 
1 
2 
siddhi cateror 
0 
0 
1 
7 
green lawn 
-10.4212157 
28.6031842 
1 
3 
flowerist 
-10.4212157 
28.6031842 
1 
8 
hotel nashik 
-2.6357434 
18.4276047 
1 
1 
DJ siddhi 
1211 
4545 
1 
8 
hotel nashik 
-2.6357434 
18.4276047 
1 
2 
siddhi cateror 
0 
0 
1 
8 
hotel nashik 
-2.6357434 
18.4276047 
1 
3 
flowerist 
-10.4212157 
28.6031842 
1 

центры стол:

Name    Type  
1 venueId   Primary int(11)   
2 venue_name   varchar(255) 
3 venuetypeId  int(11)   
4 entry_by   varchar(255) 
5 venue_address  varchar(255) 
6 latitude   double   
7 longitude   double   
8 active    int(11)   
9 vendorId   int(11) 

услуги:

Name     Type 
1 serviceIdPrimary  int(11)   
2 entry_by    varchar(255) 
3 service_name   varchar(255) 
4 service_address  varchar(255) 
5 latitude    double    
6 longitude    double    
7 servicetypeId   int(11)  
8 active    int(11)   
9 vendorId    int(11) 

vendorDetails:

Name    Type 
1 vendorIdPrimary int(11)    
2 username   varchar(30)  
3 vendorName  varchar(255) 
4 password   varchar(200) 
5 active   int(1)   
7 vendorCountry varchar(100) 
8 vendorState  varchar(100) 
9 vendorCity  varchar(100) 
10 vendorLocality varchar(200) 
11 vendorArea  varchar(200) 
12 vendorAddress text 
13 vendorPincode varchar(200) 
14 emailId   varchar(255) 
15 mobileno   varchar(15)  
16 phoneno   varchar(15)  
17 logo1   varchar(100) 
18 logo2 varchar(100)  
19 logo3 varchar(100)  
20 venueId int(11)   
21 entry_by varchar(20) 
22 entry_date varchar(20) 
23 entry_time varchar(20) 
24 last_modify_date varchar(20) 
25 ip_addr varchar(20) latin1_swedish_ci  
26 deviceToken varchar(200)  

Как я могу получить это? спасибо ..

+0

Что вы делаете в результирующем наборе? Все услуги поставщика? –

+0

да все услуги и места поставщиков, а также сведения о поставщике, номер поставщика, адрес, имя. @AlokPatel –

+0

'venues' и' services' не связаны напрямую. Таким образом, вы комбинируете результат только с поставщиками и его услугами. Если вы добавите присоединение к «поставщикам» и «местам», это вызовет повторяющиеся результаты, поскольку один поставщик может иметь несколько мест и может предоставлять несколько сервисов. –

ответ

0

Доброе утро!

Если вы действительно хотите, чтобы получить все столбцы из всех трех таблиц вы можете просто выбрать * из них:

SELECT * FROM table1, table2, table3; 

В зависимости от таблиц может занять немного больше времени, чтобы запросить все столбцы.

+0

Я получаю дубликаты записей. @ Otterbein –

+1

Вы получаете все столбцы из всех таблиц вместе. Когда у вас есть две таблицы с одинаковыми именами столбцов, вы получите оба из них одинаковыми. Чтобы этого избежать, вы должны выбрать их один за другим и дать им псевдонимы, такие как 'SELECT column1 AS alias_name, ... FROM ...' – Otterbein

0

попробовать это пожалуйста

SELECT * FROM venues INNER JOIN services USING(vendor_Id); 

по крайней мере, для 2-х таблиц и до тех пор, пока у вас есть точно такой же ColumnName в ваших таблицах он работает в течение 3 и более ОФК. но я не уверен, если вы только missformated ваши таблицы в вашем вопросе или ваш ID продавцов действительно vendorIdPrimary

0
select * 
from 
    tableA a 
     inner join 
    tableB b 
     on a.common = b.common 
     inner join 
    TableC c 
     on b.common = c.common 

Вы должны определить общую колонку в этих трех таблице.

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