我有一个SQLite数据库,看起来类似于这样:
---------- ------------ ------------
| Car | | Computer | | Category |
---------- ------------ ------------
| id | | id | | id |
| make | | make | | record |
| model | | price | ------------
| year | | cpu |
---------- | weight |
------------
我的Category
表中的record
列包含一个逗号分隔的表名列表和属于该Category的项的id,因此条目如下所示:Car_1,Car_2
。
=====================
| Category |
---------------------
| id | record |
---------------------
| 1 | Car_1,Car_2 |
---------------------
我尝试在逗号上分割记录中的项目以获得每个值:
Car_1
Car_2
然后我需要更进一步,在_
上进行拆分,并返回Car
记录。
所以如果我知道Category
id,我最后会这样结束:
---------------- ------------------
| Car | | Car |
---------------| -----------------|
| id: 1 | | id: 2 |
| make: Honda | | make: Toyota |
| model: Civic | | model: Corolla |
| year: 2016 | | year: 2013 |
---------------- ------------------
我已经成功地在逗号上进行了分割,并得到了2个record
,但我仍然坚持在_
上进行分割,并在record
中连接到表。
这是我到目前为止的查询:
WITH RECURSIVE record(recordhash, data) AS (
SELECT '', record || ',' FROM Category WHERE id = 1
UNION ALL
SELECT
substr(data, 0, instr(data, ',')),
substr(data, instr(data, ',') + 1)
FROM record
WHERE data != '')
SELECT recordhash
FROM record
WHERE recordhash != ''
这是回归
--------------
| recordhash |
--------------
| Car_1 |
| Car_2 |
--------------
任何帮助将不胜感激!
1条答案
按热度按时间qcuzuvrc1#
如果你的递归CTE按预期工作,那么你可以将
recordhash
的每个值与_
分开作为一个整数,并使用_
之后的部分作为Car
中的id
来返回: