我有两个 MySQL 表。表“dbt1”具有主键“UID”的唯一记录。
表“dbt2”使用该键,但每个 UID 有多个记录。
使用 PHP 和正确的 MySQL 查询,我如何从 dbt1 中获取记录,然后通过 dbt2 查找具有相同 UID 的所有记录,然后连续打印这些记录直到完成。然后,返回并从 dbt1 打印下一条记录,直到满足 where 子句?
这是我到目前为止所拥有的:
询问:
$dbname = 'ext';
$dbt1 = 'questions';
$dbt2 = 'stats';
$data = "questions.UID qUID, QUESTION, ANSWER_A, ANSWER_B, ANSWER_C, ANSWER_D, FIGURE, CCAstats.UID sUID, DATE, PROP, CRPBI";
$mysql_link = mysql_connect($dbhost,$dbuser,$dbpass);
$sql = ("SELECT $data FROM $dbt1 LEFT JOIN $dbt2 ON $dbt1.UID = $dbt2.UID WHERE $dbt1.SECTION = $section ORDER BY $dbt1.UID;");
$results = mysql_db_query($dbname,$sql) or die("no results");
if ($results)
{
while($row = mysql_fetch_assoc($results))
{
print "$row[qUID]"." "."$row[QUESTION]"."<br>";
print "A. $row[ANSWER_A]"."<br>";
print "B. $row[ANSWER_B]"."<br>";
print "C. $row[ANSWER_C]"."<br>";
print "D. $row[ANSWER_D]"."<br>";
print "$row[FIGURE]"."<br>";
print "$row[DATE]".", "."$row[PROP]".", "."$row[CRPBI]"."<br>";
}
mysql_free_result($results);
}
mysql_close();
这可以根据主题输出所有结果(作为 POST 变量传递),如果 $dbt1 中的任何给定记录在 $dbt2 中有多个记录,则重复输出。
问题是,我不希望来自 $dbt1 的重复输出。我希望为 $dbt1 中的所有记录返回一个条目,以及 $dbt2 中与 $dbt1 中的 UID 相关的尽可能多的记录。说得通?
因此,输出将类似于:
UID QUESTION 1
A. ANSWER A
B. ANSWER B
C. ANSWER C
D. ANSWER D
DATE, PROP, CRPBI
DATE{2}, PROP{2}, CRPBI{2}
UID QUESTION 2
A. ANSWER A
B. ANSWER B
C. ANSWER C
D. ANSWER D
DATE, PROP, CRPBI
DATE{2}, PROP{2}, CRPBI{2}
我的问题是,我是否需要另一个循环来从 $dbt2 获取所有结果,或者我可以在查询中做些什么?我需要第二个查询吗?对于任何给定的 UID,我需要为每个 $dbt1 记录报告所有 $dbt2 条目。我觉得我什至不能正确地问这个问题......对不起。