Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从两个表中选择,按第二个表中的一行排序_Php_Sql - Fatal编程技术网

Php 从两个表中选择,按第二个表中的一行排序

Php 从两个表中选择,按第二个表中的一行排序,php,sql,Php,Sql,我有两张桌子,tickets和ticket\u updates tickets\u updates中的每一行都有多行tickets 如何在ticket\u updates 我想从最早的datetime开始,在ticket\u updates中按datetime订购(DESC) 我认为以下方法可能有效,但是在PHPMyAdmin中运行时间太长,并且出现了一个内部服务器错误: SELECT t.ticketnumber, t.subject, t.contact_name FROM tickets

我有两张桌子,
tickets
ticket\u updates

tickets\u updates
中的每一行都有多行
tickets

如何在
ticket\u updates

我想从最早的
datetime
开始,在
ticket\u updates
中按
datetime
订购(DESC)

我认为以下方法可能有效,但是在PHPMyAdmin中运行时间太长,并且出现了一个内部服务器错误:

SELECT t.ticketnumber, t.subject, t.contact_name FROM tickets t JOIN ticket_updates tu on t.ticketnumber = tu.ticketnumber group by tu.ticketnumber order by tu.datetime DESC

你可以这样做:

select t.*
from tickets t
order by (select min(datetime) from ticket_updates tu where tu.ticketid = t.ticketid);
编辑:

您也可以尝试使用
分组方式

select t.*
from tickets t join
     (select ticketid, min(datetime) as mindt
      from ticket_updates tu
      group by ticketid
     ) tu
     on tu.ticketid = t.ticketid
group by tu.mindt desc;

或者,原始查询可以利用
ticket\u更新(ticketid,datetime)
上的索引,我想您可能会想要这样的内容,这与编辑后发布的内容差不多。如果运行太慢,您可能需要对查询运行解释并添加适当的索引。可以是datetime,也可以是Gordon建议的ticketnumber/datetime的复合键

SELECT t.ticketnumber, t.subject, t.contact_name FROM ticket_updates tu
INNER JOIN tickets t ON t.ticketnumber = tu.ticketnumber
GROUP BY tu.ticketnumber
ORDER BY tu.datetime DESC


运行查询需要一段时间
SELECT t.ticketnumber, t.subject, t.contact_name FROM ticket_updates tu
INNER JOIN tickets t using(ticketnumber)
GROUP BY tu.ticketnumber
ORDER BY tu.datetime DESC