首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP Mysql尝试从不同的表中提取多行(适用于2个表中的3行,但不适用于3个表中的4行)

PHP Mysql尝试从不同的表中提取多行(适用于2个表中的3行,但不适用于3个表中的4行)
EN

Stack Overflow用户
提问于 2011-03-31 08:24:10
回答 2查看 835关注 0票数 1

我正在尝试从数据库的不同表中提取多个行。

如果我只有两个表中的前3行,它可以很好地工作。只要我添加第三个表,并尝试拉出另一行,它就会断开!

最终,我要做的是提取图像,dayid,一个人的名字,然后是原因的名称。

原因和原因在同一个表中,人员的名字在表Pilot中,原因的名称在表Outfitday_id中。

由于某种原因,它将从表Outfitimage中拉出前两行(imageUrloutfitDay_id),然后从Pilot中拉出第三行(name),但如果我添加名称并尝试从Cause表中拉出它,则会失败。

代码语言:javascript
复制
$link = mysql_connect("host","user","pass");
if ($link) {
   mysql_selectdb("up",$link);  
   // Select records from the DB  
   $query  = "SELECT imageUrl,outfitDay_id,name,name FROM OutfitImage,Pilot,Cause ORDER BY Rand(" . date("Ymd") . ") LIMIT 1";
   $image = mysql_query($query);

   // Display records from the table  
   echo "";
   while ($row = mysql_fetch_array($image, MYSQL_NUM)) {
      echo "<IMAGE SOURCE='$row[0]'/><br>";
      echo "<div id='info'>Day $row[1] of ";
      echo "$row[2] Uniform Project for$row[3] </div>";
   }
   echo "";
} else {
    echo "Can't connect to the database!";
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-31 08:39:18

这可能是因为name列是不明确的。我猜您在CausePilot (或其他表)中都有一个name列。MySQL无法猜测您要从哪个表中检索列值,因此将显示一个错误(字段列表中的列名不明确)。

确保使用表名作为列名的前缀,以消除歧义:

代码语言:javascript
复制
SELECT 
   imageUrl, outfitDay_id, Cause.name, Pilot.name 
FROM 
   OutfitImage, Pilot, Cause
票数 1
EN

Stack Overflow用户

发布于 2011-03-31 08:43:12

您正在尝试跨所有三个表进行交叉联接,但是您没有创建任何条件来过滤它们。table1,table2,table3中的子句尝试跨所有三个表进行交叉联接。交叉联接意味着一个表中的每一行都与另一个表中的每一行配对。例如,假设我有三个表,每个表有两行。第一个表名为jack和jill两行,第二个表名为age,第21行和24行,第三个表名为genders,有两行male和female。如果我执行一个来自姓名、年龄、性别的子句,它将返回一个具有2X2X2=8行的表。

代码语言:javascript
复制
names ages genders
jack  21   male
jack  21   female
jack  24   male
jack  24   female
jill  21   male
jill  21   female
jill  24   male
jill  24   female

通常,当您进行交叉联接时,还会添加一个条件来过滤掉没有意义的行。例如,from示例FROM子句可能有一个WHERE genders.id = names.genders_id。在本例中,您将一个姓名与性别表中的特定性别行链接起来。这可能还会解决您对LIMIT 1的需求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5494029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档