我有2个表叫做预订和guest2。所以我想显示今天checkindate的两个表中的数据。我写得像这样。但它显示了所有记录。
<?php
echo $today=date("j-n-Y");
include("connect.php");
$SQL="SELECT bookings.bookingid, guest2.fname, guest2.lname
FROM bookings
LEFT JOIN guest2
ON bookings.guestid=guest2.guestid
AND bookings.checkindate = '$today'
ORDER BY bookings.bookingid ";
$run=mysql_query($SQL,$con) or die ("SQL2 error");
while($rec=mysql_fetch_array($run))
{
echo "booking ID".$rec['bookingid']."";
echo "Guest Name".$rec['fname']."";
echo " ".$rec['lname']."";
}
?>
有什么想法吗?
答案 0 :(得分:3)
您正在使用left join
,因此第一个能够返回的所有记录都被记录下来。将第一个表上的条件移动到WHERE
子句:
SELECT b.bookingid, g.fname, g.lname
FROM bookings b LEFT JOIN
guest2 g
ON b.guestid = g.guestid
WHERE b.checkindate = '$today'
ORDER BY b.bookingid;
或者,LEFT JOIN
可能是不必要的 - 假设所有预订都有有效的客人。如果是这样,您只需将原始查询中的LEFT JOIN
更改为JOIN
即可。
答案 1 :(得分:1)
$SQL="SELECT bookings.bookingid, guest2.fname, guest2.lname
FROM bookings
INNER JOIN guest2
ON bookings.guestid=guest2.guestid
where bookings.checkindate = '$today'
ORDER BY bookings.bookingid ";
1)使用内部联接 2)添加条件