我正在尝试运行此查询:
$query = $conn->query("SELECT * FROM $table
LEFT JOIN vacatures ON bedrijven.id = vacatures.id
WHERE id = '$id'
AND bedrijfID = '$bedrijf_id'");
但由于某种原因它失败了。我收到了这个错误。
Syntax error or access violation: 1066 Not unique table/alias
当我离开JOIN部分时,查询成功。为什么会这样?
我正在使用PHP& PDO以获取查询。
感谢。
编辑:我写了查询,感谢给出的答案。这是有效的:$query = $conn->query("SELECT * FROM bedrijven
LEFT JOIN vacatures v ON bedrijven.id = v.bedrijfID WHERE v.bedrijfID = $bedrijf_id AND v.id = $id");
答案 0 :(得分:2)
您需要在WHERE id = '$id'
中指定一个表或另一个表,即使它们在这种情况下彼此相等。
您还需要确保您的LEFT JOIN包含$table
:
$query = $conn->query("SELECT * FROM $table
LEFT JOIN vacatures ON $table.id = vacatures.id
WHERE $table.id = '$id'
AND bedrijfID = '$bedrijf_id'");
或:
$query = $conn->query("SELECT * FROM bedrijven
LEFT JOIN vacatures ON bedrijven.id = vacatures.id
WHERE bedrijven.id = '$id'
AND bedrijfID = '$bedrijf_id'");
答案 1 :(得分:1)
你的问题不是很清楚,但是如果你只想尝试一个简单的连接,其中表1上的id =表2上的id,那么下面的语句就可以了。如果那是你试图做的,那么AND语句是多余的。如果没有明确定义的变量明确定义的问题,很难知道你的目标是什么。另外,使用如下所示的预准备语句,而不是直接将变量插入到语句中。尽可能避免使用SELECT *。只选择绝对必要的东西。
$query = $conn->prepare("SELECT * FROM bedrijven b
LEFT JOIN vacatures v
ON b.id = v.id
WHERE v.id = :id");
$query->bindValue(':id', $id);
$query->execute();
答案 2 :(得分:0)
'$ id'将被视为字符串而不是变量。如果两个表都有一个名为id的字段,则需要将id指定为table.id。
$query = $conn->query("SELECT * FROM $table LEFT JOIN vacatures ON bedrijven.id = vacatures.id WHERE $table.id = $id AND bedrijfID = $bedrijf_id");