使用两个或多个表的SQL查询

时间:2015-08-09 18:21:38

标签: php sql select inner-join

我正在尝试从我的SQL获取信息到PHP页面,我遇到的问题我试图使用多个表来填充结果

表的列名相同,但表名明显不同。

表格票据

STATUS_ID; TICKET_ID

表ticket__cdata

TICKET_ID

 SELECT * FROM ticket WHERE status_id = '1' ORDER BY created DESC

我只过滤表中的表A中的1

我在表A中回显了PHP上的TICKET_ID,但现在我想在表B中过滤ticket_id并从该表单中提取信息。表中没有status_id,因此无法再次对其进行过滤。

逻辑说我必须说这样的话

 SELECT * FROM ticket_cdata WHERE ticket_id = '".$ticket_id."' 

这是我的日期代码,没有第二个查询

$result = mysql_query("SELECT * FROM ost_ticket WHERE status_id = '1' ORDER   
BY created DESC");
?>
      <?php
while($rows=mysql_fetch_array($result)){
?>
      <tr>
        <td class="center">
          <div align="center"><? echo $rows['number']; ?></div></td>
        <td><div align="center"><? echo $rows['ticket_id']; ?></div></td>
        <td><div align="center"><? echo $rows['lbs_time']; ?></div></td> //This it the info required from TABLE ticket but must be linked to the status_id

更新字符串

$result = mysql_query("SELECT   tc.* 
FROM     ticket_cdata tc
JOIN     ticket t ON tc.ticket_id = t.ticket_id 
WHERE    t.status_id = '1' 
ORDER BY t.created DESC");
?>


      <tr>
        <td class="center">
          <div align="center"><? echo $rows['number']; ?></div></td>
        <td><div align="center"><? echo $rows['ticket_id']; ?></div></td>
        <td><div align="center"><? echo $rows['created']; ?></div></td>
        <td><div align="center"><? echo $rows['subject']; ?></div></td>

现在我无法回复任何信息

2 个答案:

答案 0 :(得分:2)

您可以使用加入:

SELECT   tc.* 
FROM     ticket_cdata tc
JOIN     ticket t ON tc.ticket_id = t.ticket_id 
WHERE    t.status_id = '1' 
ORDER BY t.created DESC

答案 1 :(得分:0)

您的初始查询可以更改为:

SELECT * FROM ticket t
WHERE t.status_id = '1' 
   AND EXISTS (SELECT * FROM ticket__cdata WHERE ticket_id = t.ticket_id)
ORDER BY t.created DESC

这会将结果限制为ticket__cdata表格中包含status_id = '1'的票证。