2016-04-30 92 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條件