我有三个表,其中包含供应商详细信息、服务和地点。所有这些都有一个公共(public)字段作为供应商 ID。
我想展示与供应商相关的服务和场所。
我尝试了一些连接,但没有得到结果。
我尝试过的其中一个是:
SELECT services.serviceId as Id,
services.service_name as service_name,
services.entry_by as entry_by,
services.servicetypeId as servicetypeId,
services.latitude as latitude,
services.longitude as longitude,
services.active as active,
vendorDetails.username,
vendorDetails.emailId,
vendorDetails.vendorAddress,
vendorDetails.vendorName,
vendorDetails.mobileno,
venues.venueId as Id,
venues.venue_name as venue_name,
venues.entry_by as entry_by,
venues.venuetypeId as venuetypeId,
venues.latitude as latitude,
venues.longitude as longitude,
venues.active as active
FROM `vendorDetails` v
inner join `venues` venue on v.vendorId = venues.venueId
inner join `services` s on v.vendorId = s.vendorId
但它显示 services.serviceId 的错误为未知列。我检查了服务表中是否存在该列。
我怎样才能得到这个?谢谢..
最佳答案
实际上,您使用表别名作为表v
s
venue
vendorDetails
services
field
分别。因此,相应的表名被替换为该特定查询的别名。因此原始表名变得未知。在 inner join
venuesvenue on v.vendorId =venues.venueId
中,您将 vendorId
与 venueId
进行比较,这将返回空结果集。请尝试以下查询
SELECT
s.serviceId as Id,
s.service_name as service_name,
s.entry_by as entry_by,
s.servicetypeId as servicetypeId,
s.latitude as latitude,
s.longitude as longitude,
s.active as active,
v.username,
v.emailId,
v.vendorAddress,
v.vendorName,
v.mobileno,
venue.venueId as Id,
venue.venue_name as venue_name,
venue.entry_by as entry_by,
venue.venuetypeId as venuetypeId,
venue.latitude as latitude,
venue.longitude as longitude,
venue.active as active
FROM
`vendorDetails` v
Inner Join
`venues` venue on v.vendorId = venue.vendorId
Inner Join
`services` s on v.vendorId = s.vendorId
关于mysql - mysql连接三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38909943/