【发布时间】:2018-04-21 06:36:53
【问题描述】:
我正在使用一个包含许多表的 MySQL 数据库。我有 4 张桌子:
site_location:
siteID(PRIMARY KEY)
locationName
lat
long
员工:
employeeID(PRIMARY KEY)
employeeName
inspection_info:
inspectionID(PRIMARY KEY)
inspectionDate
employeeID
inspection_site:
inspectionID(PRIMARY KEY)
siteID(PRIMARY KEY)
我在 inspection_site 表中有值的地方
siteID 1 | inspectionID 1
siteID 1 | inspectionID 2
所以我的查询必须同时选择这两个值,但这不会发生它单独选择第一个或第二个
SQL 查询:
$sql = $wpdb->prepare("select
l.locationName
, n.inspectionDate
, e.employeeName
from site_location l
LEFT
JOIN inspection_site s
on l.siteID = s.siteID
LEFT
JOIN inspection_info n
on n.inspectionID = s.inspectionID
LEFT
JOIN employeeName e
on n.employeeID=e.employeeID
where
l.locationName = %s
AND
e.employeeID = %d
AND
n.inspectionID = %d
",$site_name,$soldier_name, $inspection_date);
$query_submit =$wpdb->get_results($sql, OBJECT);
【问题讨论】:
-
当您在 where 部分为左连接表添加条件时,您实际上进行了 INNER JOIN,因此将左连接表中的条件移动到 from 部分中的左连接语句
-
并确保
l.locationName = %s具有该参数的实际注册表 -
@JorgeCampos 关于第一条评论我不明白你的答案,第二条评论 l.locationName 得到正确的参数
-
为了清楚起见,您谈论的是
site_locaion,但您的查询实际上使用的是army_site_location,所以我认为它是一样的,对吧? -
是一样的