从子查询返回数据

时间:2019-09-03 14:15:02

标签: mysql

来自桌面数据库领域,需要有关PHP文件中使用的SELECT查询的一些建议。

对JOINS感到非常困惑,这可能是我需要使以下内容起作用的原因。

我有以下查询(从MySQL数据库提取数据):

SELECT  mem_id, firstname, lastname FROM memberdetails 
WHERE mem_id in (select mem_id from classmember   
WHERE class_id= " . $classid . ") 
ORDER BY lastname, firstname ASC

返回预期的数据集。

然后,程序循环遍历返回的数据,并针对每一行进行后续查询:

SELECT group_id FROM `classmember` 
WHERE (`mem_id`= '$memid' AND `class_id`= '$classid')

我认为应该有一种方法可以将其组合到第一个查询中,以返回按group_id,lastname,firstname,mem_id排序的数据集,从而保存后续查询(以及此处未显示的进一步操作)。但是,我看不到使它起作用。

1 个答案:

答案 0 :(得分:0)

是的,可以使用join合并到一个查询中。

这应该做到:

SELECT  
    md.mem_id, 
    md.firstname, 
    md.lastname,
    cm.group_id 
FROM 
    memberdetails AS md
INNER JOIN
    classmember AS cm 
    ON cm.mem_id = md.mem_id
WHERE 
    cm.class_id = ?
ORDER BY 
    cm.group_id, md.lastname, md.firstname, md.mem_id ASC

它未经测试,因此如果出现问题或外观错误,请发表评论。

注意:如您所见,我使用?代替了PHP变量。这是因为您应该使用带占位符的预准备语句,而不是将变量直接注入查询中。

您可以在PHP手册中阅读有关预准备语句的更多信息:

要了解有关加入的更多信息,您可以阅读以下文章: