我有两个表,每个表有3列
人
id_number / first_name / last_name / town
T1234 / James / Smith / Dant
T1235 / Peter / Mantle / Dant
T1236 / Milly / Wong / Mormer
T1237 / Susan / Tan / Dant
日期
number / id_reference / expiry
T1234 / Student id / 24/12/2018
T1235 / Library Card / 23/07/2019
T1236 / Library Card / 16/07/2019
T1235 / Licence / 02/03/2018
我正在尝试运行查询以有效地显示数据但有问题。基本上我需要的是运行查询并获得如下所示的答案,来自两个表的数据,id_number和数字是相同的。所以我需要查询从一个表中查找数据,然后从另一个表中获取到期日期: -
id_number / last_name / expiry
T1234 / Smith / 24/12/2018
T1235 / Mantle / 23/07/2019
T1237 / Tan / 02/03/2018
<?php
$dbconn = pg_connect("host=127.0.0.1 dbname=sammy_nt user=sammy_nt password=******) or die('Could not connect: ' . pg_last_error());
$town = pg_escape_string($_POST['town']);
$query = "SELECT * FROM People p, Dates d
WHERE p.id_number=d.number
AND p.town='$town'
ORDER BY p.id_number";
$result = pg_query($query);
if (!$result) {
echo "Problem with query " . $query . "<br/>";
echo pg_last_error();
exit();
}
while($myrow = pg_fetch_assoc($result)) {
printf ("<tr><td>%s</td><td>%s</td><td>%s</td></tr>", $myrow['id_number'], htmlspecialchars($myrow['last_name']), htmlspecialchars($myrow['expiry']));
}
?>
请协助。
答案 0 :(得分:0)
在您的情况下,您有2个表。要从中获取数据的People
和Dates
。您可以将以下SQL查询与INNER JOIN
一起使用。
SELECT People.*, Dates.* FROM People INNER JOIN Dates ON People.id_number = Dates.number"
请注意,您可以像往常一样附加WHERE
以及ORDER BY
和/或LIMIT
的SQL查询。
对此的说明如下:
首先你有SELECT
。之后你有People.*
,这意味着所有来自表人。所以你写表名和.
和字段(*
为全部)。在此之后添加一个comman ,
,然后使用相同的语法添加下一个表。在您的情况下,它是Dates.*
。然后添加FROM
第一个表名。在此之后,您添加INNER JOIN
和第二个表名称。之后,您可以通过ON
定义两个表之间的引用,然后定义两个表People.id_number = Dates.number
中的字段。语法相同,Table.Field
。
现在您可以正常显示结果。
请注意,我已经为您提供了可以在代码中插入的SQL查询。它可能是PDO或准备好的声明。
如果您需要进一步澄清,请随时告诉我。
希望这有帮助。