SQLITE-在同一查询中使用子查询的结果

SQLITE-在同一查询中使用子查询的结果,sqlite,eloquent,Sqlite,Eloquent,我想知道,如果是,我如何能够满足以下要求: 假设我有两张桌子: 表A有两列:id、名称 表B列:所有者、参数 现在我试图在表A中找到所有具有特定名称(动物)的行,并使用它们的ID在表b中找到它的参数值。这些参数值是表a中的不同ID。因此,我想得到两列。第一列是具有我要查找的特定名称(动物)的项的id,第二列是具有作为初始id参数的id的项的名称 表a(示例) 表b(示例) 结果(示例) 提前感谢您的任何提示/帮助 安德烈亚斯我相信以下内容会满足你的要求 SELECT owner, name FR

我想知道,如果是,我如何能够满足以下要求:

假设我有两张桌子:

表A有两列:id、名称

表B列:所有者、参数

现在我试图在表A中找到所有具有特定名称(动物)的行,并使用它们的ID在表b中找到它的参数值。这些参数值是表a中的不同ID。因此,我想得到两列。第一列是具有我要查找的特定名称(动物)的项的id,第二列是具有作为初始id参数的id的项的名称

表a(示例)

表b(示例)

结果(示例)

提前感谢您的任何提示/帮助


安德烈亚斯

我相信以下内容会满足你的要求

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'