SQL table 中的语句
SQL statement inside a table
我想要做的是在 table 中加入 SQL。
这是它的样子:
馅饼table
Id type message
1 2 'hello'
2 0 'bye'
3 2 'meh'
蛋糕table
Id data pieId
1 70 1@2
2 6 2
3 8 1@3@2
这就是两个 table 的样子,我想做的是 select 蛋糕 table data = 70
并拥有它return 蛋糕的第 1 行 table,以及 return 馅饼的第 1 行和第 2 行 table。
我真的不在乎它 return 将它们作为单独的 table、行、联接或列。
我真正想要的是能够向数据库请求 data = 8
并且能够 return 1
、2
和 3
来自馅饼 table。如果您有任何建议,我真的不在乎它是如何工作的
所以我希望能够查询蛋糕并获得动态数量的馅饼。如果您能想到某种方法,甚至 table 也可以更改。
看来您需要更新数据库设计
我会从蛋糕 table 中删除 pieId 并创建一个关系 table。让我们用 Id、PieId、CakeId 称它为 CakePies。只需将关系添加到 table
查询将是
Select *
from Cake c
Inner join CakePies cp on c.Id = cp.CakeId
inner join Pies p on p.Id = cp.PieId
where Data = 70 -- or whatever filter you want
更新
您的 CakePies table 应该如下所示:
CakeID PieId
1 1
1 2
2 2
3 1
3 2
3 3
看看这个 fnSplitString 的例子:
从那里,尝试:
SELECT c.id, c.data, (SELECT message FROM pie WHERE pieid IN (SELECT * FROM fnSplitString(c.pieid, '@') ) AS 'message'
FROM cake c
WHERE c.data = 8
这有点愚蠢 - 你最好为 pieid 列使用关系结构:例如:
cake table
Id data pieId
1 70 1
1 70 2
...
试试这个:
SELECT c.Id, c.data, p.Id, p.type, p.message
FROM cake c
INNER JOIN pie p ON '@' + c.pieId + '@' LIKE '%@' + p.Id + '@%'
WHERE c.data = 70
我想要做的是在 table 中加入 SQL。 这是它的样子:
馅饼table
Id type message
1 2 'hello'
2 0 'bye'
3 2 'meh'
蛋糕table
Id data pieId
1 70 1@2
2 6 2
3 8 1@3@2
这就是两个 table 的样子,我想做的是 select 蛋糕 table data = 70
并拥有它return 蛋糕的第 1 行 table,以及 return 馅饼的第 1 行和第 2 行 table。
我真的不在乎它 return 将它们作为单独的 table、行、联接或列。
我真正想要的是能够向数据库请求 data = 8
并且能够 return 1
、2
和 3
来自馅饼 table。如果您有任何建议,我真的不在乎它是如何工作的
所以我希望能够查询蛋糕并获得动态数量的馅饼。如果您能想到某种方法,甚至 table 也可以更改。
看来您需要更新数据库设计
我会从蛋糕 table 中删除 pieId 并创建一个关系 table。让我们用 Id、PieId、CakeId 称它为 CakePies。只需将关系添加到 table
查询将是
Select *
from Cake c
Inner join CakePies cp on c.Id = cp.CakeId
inner join Pies p on p.Id = cp.PieId
where Data = 70 -- or whatever filter you want
更新 您的 CakePies table 应该如下所示:
CakeID PieId
1 1
1 2
2 2
3 1
3 2
3 3
看看这个 fnSplitString 的例子:
从那里,尝试:
SELECT c.id, c.data, (SELECT message FROM pie WHERE pieid IN (SELECT * FROM fnSplitString(c.pieid, '@') ) AS 'message'
FROM cake c
WHERE c.data = 8
这有点愚蠢 - 你最好为 pieid 列使用关系结构:例如:
cake table
Id data pieId
1 70 1
1 70 2
...
试试这个:
SELECT c.Id, c.data, p.Id, p.type, p.message
FROM cake c
INNER JOIN pie p ON '@' + c.pieId + '@' LIKE '%@' + p.Id + '@%'
WHERE c.data = 70