我的SQL请求有一个小问题,我检查了许多有关此问题的主题,但没有找到解决方法。
我的表images
和plaquettes
都具有'domaine'列,但我只想从plaquettes
表中选择。此sql返回FetchAll错误。
我不知道为什么这个简单的INNER JOIN不起作用。
感谢您的帮助
<?php
$sqlimg = "SELECT *, plaquettes.domaine AS plaquettedomaine FROM images INNER JOIN plaquettes ON images.id = plaquettes.images_id";
$resultsimg = $connexion->query($sqlimg);
$plaquettesimg = $resultsimg->fetchAll(PDO::FETCH_OBJ);
foreach($plaquettesimg as $pimg) { ?>
<input type="hidden" value="<?php echo $pimg->name ?>" name="delete_img" >
<input type="hidden" value="<?php echo $pimg->plaquettedomaine ?>" name="delete_domaine" >
<?php } ?>
<button onclick="return confirm('Voulez vous vraiment supprimer cette plaquette ?')" type="submit" class="btn pull-left btn-danger" name="id" id="id" value="<?php echo $p->id ?>">Supprimer</button>
</form>
最佳答案
SELECT *, plaquettes.domaine AS plaquettedomaine FROM images INNER JOIN plaquettes ON images.id = plaquettes.images_id
应该是这样的
SELECT p.*, p.domaine AS plaquettedomaine
FROM
images i
INNER JOIN plaquettes p
ON i.id = p.images_id
注意我正在使用表别名以使其更易于遵循和减少键入。要为表添加别名,只需在表名称和所需别名之后放置一个空格。
获得所有列的原因是因为“
*
”。这将返回两个表的所有内容。因此,通过切换到p.*
,您可以将其限制为plaquettes
中的所有列。请注意,在大多数情况下,使用*
被认为是不好的代码,因为基础表中潜在的架构更改很可能会破坏您的应用程序。您应该列出所需的特定列。 p.Id, p....