我正在尝试从数据库中的不同表中提取多行。
如果我只有两个表中的前三行,它可以正常工作。只要我添加第三个表并尝试拉另一行就会中断!
最终我要做的是拉出图片,dayid
,一个人的名字,然后是一个原因的名字。
imageURL
和Outfitday_id
位于同一个表中,此人的姓名位于表Pilot
中,原因名称位于表格原因中。< / p>
出于某种原因,它会从表imageUrl
中拉出前两行(outfitDay_id
,Outfitimage
),然后从{{拉出第3行(name
) 1}},但如果我添加名称并尝试从Pilot
表中提取它,则会失败。
Cause
答案 0 :(得分:1)
可能是因为name
列不明确。我猜你在name
和Cause
(或其他一些表)中都有一个Pilot
列。 MySQL无法猜测要从哪个表中检索列值,并且会发出错误(字段列表中的列名称不明确)。
确保在列名前加上表名,以消除歧义:
SELECT
imageUrl, outfitDay_id, Cause.name, Pilot.name
FROM
OutfitImage, Pilot, Cause
答案 1 :(得分:0)
您正在尝试跨所有三个表进行交叉连接,但您没有创建任何条件来过滤它们。 FROM table1,table2,table3子句尝试跨所有三个表进行交叉连接。交叉连接意味着来自一个表的每一行与另一个表中的每一行配对。例如,假设我有三个表,每个表有两行。第一个表我叫两行jack和jill的名字,第二个表我叫第21和24行的年龄,第三个表是性别,有男性和女性行。如果我从名称,年龄,性别做一个子句,它将返回一个2 X 2 X 2 = 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
通常,当您进行交叉连接时,还要向WHERE添加条件以过滤掉没有意义的行。例如,从示例FROM子句中,您可能有一个WHERE genders.id = names.genders_id。在这种情况下,您要将名称与性别表中的特定性别行相关联。这可能也会解决您对LIMIT 1的需求。