从2个表中获取记录

时间:2016-04-30 16:43:10

标签: php sql

我有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']."";


                    }

?>  

booking table guest2 table

有什么想法吗?

2 个答案:

答案 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)添加条件