我在 SQLite 中有一個名為Clients:
| ID | 姓名 | 愛好 | 子愛好 |
|---|---|---|---|
| 1 | 安妮 | 運動、時尚 | 鞋子,游泳 |
| 2 | 最大限度 | 吃,自動 | 甜點、汽車 |
Hobbies我使用公用表運算式 ( )拆分列with split() as:
| ID | 姓名 | 愛好 | 子愛好 |
|---|---|---|---|
| 1 | 安妮 | 運動的 | 鞋子,游泳 |
| 1 | 安妮 | 時尚 | 鞋子,游泳 |
| 2 | 最大限度 | 吃 | 甜點、汽車 |
| 2 | 最大限度 | 自動 | 甜點、汽車 |
現在我還想拆分Subhubbies列,我可以使用 CTE 來完成。我想要的格式是(游泳是運動、鞋子-時尚、甜點-吃和汽車-汽車的子集):
| ID | 姓名 | 愛好 | 子愛好 |
|---|---|---|---|
| 1 | 安妮 | 運動的 | 游泳 |
| 1 | 安妮 | 時尚 | 鞋 |
| 2 | 最大限度 | 吃 | 甜點 |
| 2 | 最大限度 | 自動 | 汽車 |
這張表中有很多客戶,愛好和子愛好,所以我不想一一做這個。有什么想法可以通過查詢將它們拆分并放置在正確的位置嗎?
uj5u.com熱心網友回復:
您需要定義愛好表:
CREATE TABLE Hobbies (
`Hobby` TEXT,
`SubHobby` TEXT
);
INSERT INTO Hobbies
(`Hobby`, `SubHobby`)
VALUES
('sports', 'swimming'),
('fashion', 'shoes'),
('eating', 'desserts'),
('automative', 'cars');
無論如何,您都應該擁有此表,因為否則您的 Clients 表未標準化。然后對 Clients/Hobbies 表運行此查詢:
SELECT c.ID, c.Name, h.Hobby, h.SubHobby
FROM Clients AS c, Hobbies AS h
WHERE instr(' ' || c.SubHobbies || ',', ' ' || h.SubHobby || ',')
根據您的資料,簡單WHERE instr(c.SubHobbies, h.SubHobby)也可能會很好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/511639.html
