SQLITE-在同一查询中使用子查询的结果
我想知道,如果是,我如何能够满足以下要求: 假设我有两张桌子: 表A有两列:id、名称 表B列:所有者、参数 现在我试图在表A中找到所有具有特定名称(动物)的行,并使用它们的ID在表b中找到它的参数值。这些参数值是表a中的不同ID。因此,我想得到两列。第一列是具有我要查找的特定名称(动物)的项的id,第二列是具有作为初始id参数的id的项的名称 表a(示例) 表b(示例) 结果(示例) 提前感谢您的任何提示/帮助SQLITE-在同一查询中使用子查询的结果,sqlite,eloquent,Sqlite,Eloquent,我想知道,如果是,我如何能够满足以下要求: 假设我有两张桌子: 表A有两列:id、名称 表B列:所有者、参数 现在我试图在表A中找到所有具有特定名称(动物)的行,并使用它们的ID在表b中找到它的参数值。这些参数值是表a中的不同ID。因此,我想得到两列。第一列是具有我要查找的特定名称(动物)的项的id,第二列是具有作为初始id参数的id的项的名称 表a(示例) 表b(示例) 结果(示例) 提前感谢您的任何提示/帮助 安德烈亚斯我相信以下内容会满足你的要求 SELECT owner, name FR
安德烈亚斯我相信以下内容会满足你的要求
SELECT owner, name FROM tableb JOIN tablea ON argument = id;
但是,在使用子查询时,您可以使用:-
SELECT owner, (SELECT name FROM tablea WHERE argument = id) AS name FROM tableb;
工作示例:-
结果:-
第二个呢
您需要从
tablea
到tableb
的双连接,然后再次执行doublea
:
select
a.name ownwename,
t.name name
from tablea a
inner join tableb b
on b.owner = a.id
inner join tablea t
on t.id = b.argument
where a.name = 'animal'
请参见为什么不使用
联接
而不是子查询?请发布您的帖子并显示您已经拥有的SQL。谢谢您的回复。我做了一把小提琴:但结果我想要:动物-猫|动物-狗|动物-马|动物-鸟简单地说,使用SELECT owner,'animal-'| name FROM tableb JOIN tablea ON argument=id代码>(或对子查询也是如此)。如果希望结果列名为name,请使用SELECT owner,'animal-'| | name作为tableb JOIN tablea ON argument=id;嗯,但是我不想要所有者id。我想要两列:第一列是tablea“animal”的名字,第二列是作为参数的id的名字。所以:Animal-Cat等。这不是你的问题所说的预期结果,上面的结果与预期结果匹配,而不是列名。你需要清楚而准确地知道你想要什么,你应该相应地编辑问题,或者最好问另一个问题。太棒了!谢谢!
SELECT owner, name FROM tableb JOIN tablea ON argument = id;
SELECT owner, (SELECT name FROM tablea WHERE argument = id) AS name FROM tableb;
DROP TABLE If EXISTS tablea;
CREATE TABLE IF NOT EXISTS tablea (id INTEGER PRIMARY KEY, name TEXT);
INSERT INTO tablea (name) VALUES ('animal'),('animal'),('animal'),('animal'),('cat'),('dog'),('horse'),('bird'),
('animal'),('cat'),('dog'),('horse'),('bird'),('animal'),
('cat'),('dog'),('horse'),('bird') -- id's 15-18 inclusive
;
DROP TABLE IF EXISTS tableb;
CREATE TABLE IF NOT EXISTS tableb (owner INTEGER PRIMARY KEY, argument INTEGER);
INSERT INTO tableb (argument) VALUES(15),(16),(17),(18);
SELECT owner, name FROM tableb JOIN tablea ON argument = id;
SELECT owner, (SELECT name FROM tablea WHERE argument = id) AS name FROM tableb;
select
a.name ownwename,
t.name name
from tablea a
inner join tableb b
on b.owner = a.id
inner join tablea t
on t.id = b.argument
where a.name = 'animal'