选择两个表...

时间:2011-03-03 19:01:11

标签: php mysql sql select join

我想要用两张表来查看报告,我可以在输入日期后得到这些表格。

以下是我的表:对于客户 - customer_date,lastname,firstname

用于服务 - room_number,date_in,date_out

现在我的代码是:它似乎无法从我的表中获取任何行

<?php 

$conn = mysql_connect("localhost","root","");

mysql_select_db('irm',$conn);

if(isset($_GET['Submit'])){

$customer_date = $_GET['customer_date'];
}

?>
<form method="get">
<table width="252" border="0">
  <tr>
    <td width="98">Choose Date:</td>
    <td width="144"><label>
  <input onclick="ds_sh(this);" name="customer_date" id="customer_date" readonly="readonly" style="cursor: text" />
</label></td>
 </tr>
 <tr>
<td align="right"><input type="submit" value="Submit" /></a></td>
<td></td>
</tr>
</table>
</form>  

<form>
<?php

    $tryshow = "SELECT * FROM customers,services WHERE customer_date = '$customer_date' ";

    $result = @mysql_query($tryshow,$conn)
            or die("cannot view error query"); 

    if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print...";
}
while($row=mysql_fetch_assoc($result)){
?>
<table width="700" border="0">
    <tr>
      <td width="100">Customer Date:</td>
      <td width="100">Last Name</td>
      <td width="100">First Name</td>
      <td width="100">Room Number</td>
      <td width="100">Date In</td>
      <td width="100">Date Out</td>
    </tr>
    <tr>
      <td><?php echo $row["customer_date"]; ?></td>
      <td><?php echo $row['lastname']; ?></td>
      <td><?php echo $row['firstname']; ?></td>
      <td><?php echo $row['room_number']; ?></td>
      <td><?php echo $row['date_in']; ?></td>
      <td><?php echo $row['date_out']; ?></td>
   </tr>
  </table>
<?php }?>
</form>

有了这个,我可以得到任何在该日期签到的客户的报告。

我需要一些建议。希望你能尽快回答我。

4 个答案:

答案 0 :(得分:3)

两个表之间似乎没有任何共同字段。如何在C日存储客户A在B房间的事实?要进行SQL连接,要连接的表必须至少有一个共同的字段。

同样,不要只是说die("cannot view error query"),这对于调试来说完全没用,请尝试执行die(mysql_error(),这样可以找到查询失败的确切原因。

同样,如果查询正常工作,那么您将为找到的每一行输出整个HTML表。您应该具有获取循环的表头和页脚数据OUTSIDE。

答案 1 :(得分:2)

您需要将两个表与JOIN相关联。根据提供的信息,customers.customer_dateservices.date_in似乎是最有可能的候选人。这假定日期列仅包含日期而不是日期/时间。

另请注意,我在查询中未使用select *,您也不应该使用SELECT c.customer_date, c.lastname, c.firstname, s.room_number, s.date_in, s.date_out FROM customers c INNER JOIN services s ON c.customer_date = s.date_in WHERE c.customer_date = '$customer_date' 。 ; - )

{{1}}

答案 2 :(得分:1)

当您对数据库进行查询时,请确保您的日期格式为yyyy-mm-dd

Mysql仅以此格式了解日期,因此您只需要比较此格式的日期格式。

您的$customer_date应采用yyyy-mm-dd格式

答案 3 :(得分:1)

顺便说一句,我会将customer_date更改为更有意义的内容,例如“date_in”。 (当名称可预测时,这是一件好事!)您不需要指定它是客户,因为它已经在客户表中。