如何从子数组中提取数据,并进行组合

时间:2011-06-06 20:36:15

标签: php mysql

我进行数据库调用以列出属于用户的所有“类别”。这会返回一个数组,其子数组包含每个类别的特定数据。

如何从这些中挑选类别ID,并将它们组合起来形成一个新查询来抓取这些类别中的所有帖子?


表:“作业”和“类”。

Assigments:assignmentid,classid,...
类:classname,userid,...

这是我正在使用的代码。

$query = dbquery("SELECT classid, classinfo FROM classes WHERE userid = 1");

这会返回一个包含子数组的数组:

Array ( 
[0] => Array ( [classid] => 2 [classinfo] => classinfo )
[1] => Array ( [classid] => 3 [classinfo] => classinfo ) 
...

如何提取所有classid,然后将它们列为“2 OR 3 OR ...”以用于另一个MySQL查询?

2 个答案:

答案 0 :(得分:1)

foreach覆盖类别数组,构建一个新的数组或简单的字符串,您可以将其包含在帖子查询中。

这就是我所能说的,没有一些特定的代码来批评。虽然,听起来像你可以在SQL中完全做的事情。 (根据您的缓存需求,可能适用也可能不适用。)

答案 1 :(得分:1)

你真的不必这样做(在PHP中获取classids,然后发送另一个查询)。你可以简单地使用你的查询:

SELECT assignments.assignmentid      
     , assignments.classid
     , assignments.otherfield
FROM assignments
WHERE assignments.classid IN 
  ( SELECT classid, classinfo
    FROM classes
    WHERE userid = 1
  )

SELECT assignments.assignmentid      --- or whatever fields you want
     , assignments.classid           --- from table assignments
     , classes.classinfo           --- or table classes
FROM assignments
  JOIN classes
    ON assignments.classid = classes.classid
WHERE classes.userid = 1  

这两个查询都会显示几乎相同的结果(如果从第二个查询中删除classes.classinfo,结果将是相同的)。也就是说,所有与userid = 1的类相关的赋值数据。


网上有很多SQL教程。您可以尝试例如: w3schools.com