我遇到了来自2个表的select命令的问题。
所以我有table1:
table1_id = int pk;
table1_name;
table1_surname;
table1_age;
table1_address;
table1_city;
和table2:
table2_id int pk
table1_id int fk references table1.table1_id;
table3_id;
table2_description;
当我编写以下select语句时,我得到了不明确的列名table1.table1_name错误:
SELECT table2.table2_id, table2.table1_id, table1.table1_name, table2.table2_description
from table1,
table2 inner join
table1
on table2.table1_id = table1.table1_id;
老实说,我不明白它有什么问题?
答案 0 :(得分:3)
如果我理解正确,你在下面的行中有问题
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
在上面的代码中,您使用from table1, table2
和CROSS JOIN
之间的table2
,这在您的情况下不是必需的。
更改您的查询,如下所示。
table1
答案 1 :(得分:0)
在<my_status>Dropped</my_status>
之后删除table1,
(混合旧类型“逗号”和现代连接语法)
使用如下:
from
答案 2 :(得分:0)
从不在FROM
子句中使用逗号。 始终使用正确的JOIN
语法:
select t2.table2_id, t2.table1_id, t1.table1_name, t2.table2_description
from table1 t1 join
table2 t2
on t2.table1_id = t1.table1_id;
您的查询存在的问题是,由于逗号,您有两个对table1
的引用。你曾两次提到这张桌子。因此,当您引用该列时,引擎并不知道您所指的是什么。您的版本相当于:
from table1 cross join
table2 join
table1
on table2.table1_id = table1.table1_id
table1
出现两次,因此对它的任何引用都不明确。
您会注意到我还在查询中添加了表别名。表别名使查询更容易编写和读取。