繁体   English   中英

PHP 和 SQL 查询 select id,然后在另一个查询中使用这些 id

[英]PHP and SQL query to select ids and then use those ids in another query

我有以下查询:

SELECT 
   DISTINCT(t1.aid),  
   t1.t1Name, 
   t1.startDate, 
   t1.startTime, 
   t1.endDate, 
   t1.endTime, 
   t1.version,
   t5.name,
FROM t1
LEFT JOIN t2 
   ON t2.aid= t1.aid
LEFT JOIN t3 
   ON t3.gid= t2.gid
LEFT JOIN t4 
   ON t4.sid= t3.sid
LEFT JOIN t5 
   ON t5.cid= t4.cid
ORDER BY t5.cid, t4.sNum

运行查询后,我使用 while 循环得到一个数组,如下所示:

$values[] = array('name', 'aid', 'startDate', 'startTime', 'endDate', 'endTime', 't1Name', 'version')

我想使用 t1.aid 来收集另一个数组并将该数组添加到原始数组中,其中 t1.aid 将形成如下内容:

$values[] = array('name', 'aid', 'startDate', 'startTime', 'endDate', 'endTime', 't1Name', 'version', 'groups'=> array())

目前我正在 foreach 循环中运行另一个查询,而且速度很慢。 我希望有一种方法可以同时运行两个查询(或至少避免 foreach 循环)...第二个查询是:

SELECT
  t6.groupName, 
  t4.sNum, 
  t5.name
FROM t6
LEFT JOIN t2
   ON t2.gid = t6.gid
LEFT JOIN t4
   ON t4.sid = t2.sid
LEFT JOIN t5 
   ON t5.cid = t4.cid
WHERE t2.aid = :aid

注意:t1、t2、t3 等在两个查询中是相同的表。

Output:

$groups[] = array('groupName', 'sNum', 'name')

提前感谢您,并对格式错误和/或难以阅读表示歉意。

只需使用子选择:

INSERT INTO table_1 (id) VALUES ((SELECT id FROM table2));

UPDATE table1 SET column1=((SELECT id FROM table2));

您可以使用普通SELECT执行的所有操作,您可以使用子SELECT执行所有操作,包括LEFT JOININNER JOIN 您只需要确保返回适当/匹配数量的列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM