从联合sql中回显? 联合选择将select语句连接到一个结果集中,因此具有相同的列名

从联合sql中回显? 联合选择将select语句连接到一个结果集中,因此具有相同的列名,sql,union,Sql,Union,正确的SQL: <?php $sql = mysql_query(" SELECT navn FROM member_film WHERE username = '$pusername' UNION SELECT meetup FROM member_meetups WHERE byusername = '$pusername' UNION SELECT title FROM member_tutorials WHERE username = '$pusername'"); $rowit

正确的SQL:

<?php 
$sql = mysql_query("
SELECT navn FROM member_film WHERE username = '$pusername'
UNION SELECT meetup FROM member_meetups WHERE byusername = '$pusername'
UNION SELECT title FROM member_tutorials WHERE username = '$pusername'");
$rowit = mysql_fetch_array($sql);
$number = mysql_num_rows($sql);
?>
<? echo $number; ?>
<? echo $rowit["navn"]; ?><br>
<? echo $rowit["meetup"]; ?><br>
在php中:

SELECT navn colName, 'member_film' tableName FROM member_film WHERE username = '$pusername'
UNION SELECT meetup colName, 'member_meetups' tableName FROM member_meetups WHERE byusername = '$pusername'
UNION SELECT title colName, 'member_tutorials' tableName FROM member_tutorials WHERE username = '$pusername'");

并找出哪个表:

<? echo $rowit["colName"]; ?><br>


联合查询将多个查询的结果组合成一个结果集。为了使联合工作,所有子查询必须为查询的每个位置或每个命名字段返回具有相同数据类型的字段

因此,原始查询将生成一个结果集,其中包含一个名为“navn”的字段(取自union的第一个子查询)。因此,为了使其更具可读性,您可以在每个子查询上使用
将字段重命名为myName
(sam munkes的解决方案)

但是,从您访问查询的方式来看,我相信您希望有一行包含所有3个值,那么您应该尝试使用以下方法:

 <? echo $rowit["tableName "]; ?><br>
在评论之后编辑:

SELECT member_film, member_meetups.meetup, meber_tutorials.title
FROM member_film, member_meetups, member_tutorials
WHERE member_film.username = '$pusername' AND
      member_film.username = member_meetups.byusername AND
      member_film.username = member_tutorials.username
这将产生一个表,其中有一列名为“comment”,并且是varchar(100)。现在可以通过“注释”列访问所有值。如果您需要知道从哪个表中获取信息,请使用答案。我插入了convert,以确保所有条目都具有相同的数据类型和长度,如果它们在您的数据库中,您可以省略这一部分,只使用名称。如果需要,需要调整长度


为了澄清这一点,现在只有一列名为“comment”。

不确定OP的意图是什么。。。所以我详细解释了一下,见下文。但当我使用$rowit[“colName”]时,它仍然只显示member_电影中2列中的1列,而没有显示member_meetup中的1列?这不是解决方案你想要一个并集,即一个字段,还是想要一个联接,即3个字段?你可以发布一个示例输出(即结果应该是什么样子),以便我们更好地理解你的问题。好的,请查看我更新的问题我想你误解了我。。我想展示用户($pusername)在member_电影、member_会议、member_教程中发布的内容。。然后,如果用户的用户名有两列,我想显示同一列中的“navn”。与成员教程上的标题相同,与成员聚会上的聚会相同。希望你现在能更好地理解我,如果你有问题,请回复
SELECT CONVERT(varchar(100), navn) AS Comment FROM member_film WHERE username = '$pusername'
UNION
SELECT CONVERT(varchar(100), meetup) AS Comment FROM member_meetups WHERE byusername = '$pusername'
UNION
SELECT CONVERT(varchar(100), title) AS Comment FROM member_tutorials WHERE username = '$pusername'