如何解决一个查询中包含两个 select 语句的问题

问题描述 投票:0回答:2

我想用

og
语言检索带有
sql
php
标签,但我只能看到1个结果,这是他读到的第一个结果,另一个我在页面源代码中看不到。

这是带有 php

代码

$query = "SELECT metatitle FROM isacontent_content WHERE contentid = 12245
          UNION ALL 
          SELECT name FROM isacontent_module_anchorimage WHERE contentid = 12245";

$resimage = $conn->query($query);

if(is_array($resimage)){

    foreach ($resimage as $resItem){

        $metaData[] = $resItem->fetch_assoc();

    }

}else{

    $metaData[] = $resimage->fetch_assoc();

}
$title = $metaData[0]["metatitle"];   
$image = $metaData[0]["name"];

我希望这两个 select 语句都能工作,并且我可以在元标记中看到这两个内容

php sql database
2个回答
0
投票

对于

UNION ALL
,您的列名称必须相同,或者您可以使用
ALIAS

但是,在您的示例中,您可以简单地使用

INNER JOIN
通过使用 1 个单个查询从 2 个表中获取这两个值。

示例:

SELECT ic.metatitle, im.name FROM isacontent_content ic
INNER JOIN isacontent_module_anchorimage im ON im.contentid = ic.contentid
WHERE ic.contentid = 12245

使用

INNER JOIN
因为你的两个表都有关系,所以你可以简单地使用
INNER JOIN

旁注:

如果您知道,您的查询将返回 1 行,那么为什么要将数据存储到此处的数组中

$metaData[]
?您可以简单地将
$title
$image
存储在
foreach()
循环中。


0
投票

使用 union 时,列的数量必须相同,因为它将合并两个查询的结果。在您的情况下,您要求的特定内容结果存储在多个表中,因此您可以进行联接。

© www.soinside.com 2019 - 2024. All rights reserved.