2016-04-30 94 views
1

我有2个表,分别称为预订和guest2。所以我想显示今天checkindate的两个表的数据。我写过这样的。但它显示所有记录。从2个表中获取记录

<?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

任何想法?

+0

不行啊..它是今天愚蠢的错误$ =日期( “J-正Y”);这必须更改为$ today = date(“Y-n-j”);根据我的表...现在它的工作..谢谢 –

回答

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

+0

没有亲爱的..这是一个愚蠢的错误$ today = date(“j-n-Y”);这必须更改为$ today = date(“Y-n-j”);根据我的表...现在它的工作..谢谢 –

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