Mysql 从子查询返回数据

Mysql 从子查询返回数据,mysql,Mysql,来自桌面数据库世界,需要一些关于PHP文件中使用的SELECT查询的建议 对连接感到困惑,这是我可能需要让下面的工作正常进行的 我有以下查询(从MySQL数据库提取数据): 它返回预期的数据集 然后,程序在返回的数据中循环,每一行都有一个后续查询: SELECT group_id FROM `classmember` WHERE (`mem_id`= '$memid' AND `class_id`= '$classid') 我认为应该有一种方法将其结合到第一个查询中,以返回按组id、last

来自桌面数据库世界,需要一些关于PHP文件中使用的SELECT查询的建议

对连接感到困惑,这是我可能需要让下面的工作正常进行的

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

它返回预期的数据集

然后,程序在返回的数据中循环,每一行都有一个后续查询:

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

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

是的,可以使用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手册中阅读有关准备语句的更多信息:

要了解有关join的更多信息,请阅读以下文章:


如果冒犯了您,请道歉-这是一个PHP文件的摘录,解释了
mem\u id
='$memid'和
class\u id
='$classid'-我排除了与问题无关的所有内容,因为它只是需要整理的查询。不要担心冒犯我,我只是想告诉你一个正确的方法,在SOThanks询问答案-已经修改了代码以使用你的建议并得到一个错误“您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在第1行的cm.mem_id=md.mem_id,其中cm.class_id=9'上使用near'AS-md-INNER-JOIN-classmember-AS-cm“@OldGuy-你能在执行之前回显完整的查询并将其发布到这里吗?嗨,Magnus-它可以正常工作-我在FROM和memberdetails之间没有留下空格,我只是没有看到它!”感谢您的帮助和MySQL连接教程的链接。
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