php - INNER JOIN + SELECT 特定列

标签 php html mysql sql database

我的 SQL 请求有一个小问题,我检查了很多有关此问题的主题,但没有找到如何解决。

我的表imagesplaquettes都有“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....

关于php - INNER JOIN + SELECT 特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37924927/

相关文章:

mysql - PDOException SQLSTATE HY000 2002 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2)

php - MySQL查找2个日期是否在多行的日期范围之间

php - Docker 组成多个子网站

html - 如何增加标签的宽度?

html - 使容器在包裹时收缩以适合子元素

php - 将上传的图像名称存入数据库

PHP 查询生成器/报告器

php - MySql:使用 GROUP_CONCAT 和 COUNT 时

javascript - 如何用 div 和 Javascript 替换 iframe?

mysql - 从另一个存储过程中的存储过程返回表