所以我重新设计了我的数据库,因为我意识到可以通过将以前的"列表"(由空格分隔的单词/字符串的字符串)列拆分到不同的表中来使它变得更好。
我的问题是,我需要从一个表中获取文件名,该表具有引用另一个表中的uid
的某个uid
,我大多数情况下都是这样做的,除了我需要能够从引用第二个表的原始表中获取多行。
如果这没有意义,下面是我的代码和相关结构:
SELECT * FROM (
SELECT
a.uid, a.reward_title, a.reward_content,
a.reward_date as date_time, a.reward_pinned as pinned, (
SELECT c.file_name FROM files c WHERE c.reference_uid = a.uid AND c.reference_type = ?
) as images
FROM rewards a
INNER JOIN subscriptions b ON b.creator_uid = a.creator_uid AND b.tier_hierarchy = a.tier_hierarchy
WHERE b.user_uid = ?
)
CREATE TABLE rewards (
uid TEXT UNIQUE PRIMARY KEY NOT NULL,
creator_uid TEXT NOT NULL,
tier_hierarchy INTEGER,
reward_title TEXT NOT NULL,
reward_content TEXT NOT NULL,
reward_date TEXT NOT NULL,
reward_tags TEXT,
reward_pinned INTEGER NOT NULL DEFAULT 0,
FOREIGN KEY (creator_uid) REFERENCES users (uid)
)
CREATE TABLE files (
uid TEXT UNIQUE PRIMARY KEY NOT NULL,
reference_uid TEXT NOT NULL,
reference_type TEXT NOT NULL,
file_name TEXT NOT NULL,
file_type INTEGER NOT NULL DEFAULT 1,
thumbnail BOOLEAN DEFAULT NULL
)
files
表格
rewards
表格
当前返回此
正如您在第二张图中所看到的那样,条件将返回两行,我想知道如何将这两行file_name
列放入一个列表中,作为原始select
中的第6列
1条答案
按热度按时间jk9hmnmh1#
可以使用group_concat()将多行折叠为一行。