我正在尝试从数据库的不同表中提取多个行。
如果我只有两个表中的前3行,它可以很好地工作。只要我添加第三个表,并尝试拉出另一行,它就会断开!
最终,我要做的是提取图像,dayid,一个人的名字,然后是原因的名称。
原因和原因在同一个表中,人员的名字在表Pilot中,原因的名称在表Outfitday_id中。
由于某种原因,它将从表Outfitimage中拉出前两行(imageUrl,outfitDay_id),然后从Pilot中拉出第三行(name),但如果我添加名称并尝试从Cause表中拉出它,则会失败。
$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!";
}发布于 2011-03-31 08:39:18
这可能是因为name列是不明确的。我猜您在Cause和Pilot (或其他表)中都有一个name列。MySQL无法猜测您要从哪个表中检索列值,因此将显示一个错误(字段列表中的列名不明确)。
确保使用表名作为列名的前缀,以消除歧义:
SELECT
imageUrl, outfitDay_id, Cause.name, Pilot.name
FROM
OutfitImage, Pilot, Cause发布于 2011-03-31 08:43:12
您正在尝试跨所有三个表进行交叉联接,但是您没有创建任何条件来过滤它们。table1,table2,table3中的子句尝试跨所有三个表进行交叉联接。交叉联接意味着一个表中的每一行都与另一个表中的每一行配对。例如,假设我有三个表,每个表有两行。第一个表名为jack和jill两行,第二个表名为age,第21行和24行,第三个表名为genders,有两行male和female。如果我执行一个来自姓名、年龄、性别的子句,它将返回一个具有2X2X2=8行的表。
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的需求。
https://stackoverflow.com/questions/5494029
复制相似问题