我有一个基本的 SQL SELECT 函数:
$stmt = $mysqli->prepare("SELECT a.*,
b.nom_organisation
FROM roster a
INNER JOIN organisation b
ON a.id_organisation = b.id_organisation
WHERE a.id_roster = ? LIMIT 1");
if ($stmt) {
$stmt->bind_param('i', $id_roster); // Bind "$email" to parameter.
$stmt->execute(); // Execute the prepared query.
$stmt->store_result();
// get variables from result.
$stmt->bind_result($id_roster, $nom_roster, $description_roster, $created_by, $creation_date, $nom_organisation);
$stmt->fetch();
我得到一个名为 $created_by 的变量
该变量是一个整数(用户 ID)。我需要访问另一个名为“member”的表。获取用户的姓名。现在我正在做另一个查询:
$stmt = $mysqli->prepare("SELECT a.first_name,
a.last_name
FROM membre a
WHERE a.id_membre = ? LIMIT 1");
$stmt->bind_param('i', $created_by); // Bind "$email" to parameter.
$stmt->execute(); // Execute the prepared query.
$stmt->store_result();
它正在工作,但似乎代码很多,但作用不大。有没有办法只用一个查询来做到这一点?
最佳答案
像这样怎么样:
SELECT r.id_roster
, r.nom_roster
, r.description_roster
, r.created_by
, r.creation_date
, o.nom_organisation
, m.first_name
, m.last_name
FROM roster r
INNER JOIN organisation o ON r.id_organisation = o.id_organisation
INNER JOIN member m ON r.created_by = m.id_membre
WHERE r.id_roster = ? LIMIT 1
明确列出所有选定字段而不是使用 * 也是一个好习惯
关于php - SQL SELECT 到多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27108538/