如何从三个表中选择*?

时间:2016-08-11 06:16:07

标签: mysql database join relational-database

我有三个表场所,服务和vendorDetails。我想从所有表中获取所有列。

我试过加入两张桌子,但我得到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)    

我怎么能得到这个?谢谢..

3 个答案:

答案 0 :(得分:0)

早上好!

如果您真的想要获取所有三个表中的所有列,只需选择*个列:

SELECT * FROM table1, table2, table3;

根据表格,请求所有列可能需要更长的时间。

答案 1 :(得分:0)

请试试这个

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

至少对于你的2个表而言,只要你在表中拥有完全相同的列名,它就适用于3个或更多的ofc。但我不确定你是否在你的问题中错过了你的表格,或者你的供应商ID真的是vendorIdPrimary

答案 2 :(得分:0)

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

您必须在这三个表中定义公共列。