douhuangjian9627 2015-09-07 10:12
浏览 45
已采纳

如何使用子查询打印多行?

I am new in php. I have a code in which i try to print multiple rows using sub query

<?php
include ("connection.php");

$q_opinion="SELECT r.client_id,c.id,t.id,a.id,o.id,c.name as opinion, r.notification_date, t.title as ttitle,a.title as atitle,o.title as otitle, l.title as ltitle, s.title as stitle, pr.opinion_id, pc.id, pr.client_id as pr_client, pc.address, pc.liaison_one, city.id, pc.head_office_id, city.city, pc.title as cname
FROM og_ratings r 
LEFT JOIN og_companies c
ON r.client_id = c.id
LEFT JOIN og_rating_types t
ON r.rating_type_id = t.id
LEFT JOIN og_actions a
ON r.pacra_action = a.id
LEFT JOIN og_outlooks o
ON r.pacra_outlook = o.id
LEFT JOIN og_lterms l
ON r.pacra_lterm = l.id
LEFT JOIN og_sterms s
ON r.pacra_sterm = s.id
LEFT JOIN pacra_client_opinion_relations pr
ON pr.opinion_id = c.id
LEFT JOIN pacra_clients pc
ON pc.id = pr.client_id
LEFT JOIN city
ON city.id = pc.head_office_id
WHERE r.client_id  = (SELECT opinion_id FROM pacra_client_opinion_relations WHERE client_id = 50)
";
$result = mysql_query($q_opinion) or die;
$rating = array();
while($row = mysql_fetch_assoc($result))
{
  $rating[] = $row['cname'];
  $action[] = $row['atitle'];
  $opinion[] = $row['opinion'];
}
for ($i=0; $i<count($rating); $i++)
{ ?>
    <table border="1">
    <tr>
         <td><?= $rating[$i] ?> </td>
         <td><?= $action[$i] ?> </td>
         <td><?= $opinion[$i] ?> </td>

    </tr>
    </table>
<?php   
}
?> 

This code show me blank result in my php file. But when i run this query in PhpMyadmin it show me error that it contain more than one line

if i change my subquery with limit

like

SELECT opinion_id FROM pacra_client_opinion_relations WHERE client_id = 50 LIMIT 1

Then it print record

But id =50 contain 4 records.

I want to print all record mean want to print multiple rows. How i can do it?

  • 写回答

1条回答 默认 最新

  • duanqianpu6499 2015-09-07 10:24
    关注
    r.client_id = (your sub query)
    

    When doing this, the query is trying to match the ID with one piece of data from the sub query. However, as you've mentioned, this query returns four pieces of data. So you want to check if the ID is IN the subquery data, not equal to it.

    r.client_id IN (your sub query)
    

    The reason your query worked when you added LIMIT 1 is because your sub query was only returning one piece of data, as expected.

    Take a look here for more information on the IN clause:

    http://www.tutorialspoint.com/mysql/mysql-in-clause.htm

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试