3

MyOrders と MyDrivers の 2 つのテーブルがあります。

テーブル MyOrders には、Details という列があります (データ型 TEXT - わかっていますが、データベースを構築していません...)

MyOrders.Details には、テーブル MyDrivers の ID 値に対応する数値のコンマ区切りリストが含まれている場合があります。

目標は、これらのリストを使用して MyOrders を MyDrivers に結合することです。

例えば:

CREATE TABLE MyOrders 
(
MyOrderID INT IDENTITY,
Details TEXT -- Wish it were NVarchar, but what can I do...
)
GO

CREATE TABLE MyDrivers
(
MyDriverID INT IDENTITY,
DriverName NVARCHAR(50)
)
GO

INSERT INTO MyOrders (Details) VALUES ('1,3,5,7,9')
INSERT INTO MyOrders (Details) VALUES ('2,4,6,8')
INSERT INTO MyOrders (Details) VALUES ('1,2,3,4')
INSERT INTO MyOrders (Details) VALUES ('4,5,6,7,8')
INSERT INTO MyOrders (Details) VALUES (NULL)
INSERT INTO MyOrders (Details) VALUES ('')
INSERT INTO MyOrders (Details) VALUES ('9')

INSERT INTO MyDrivers (DriverName) VALUES ('Alex')
INSERT INTO MyDrivers (DriverName) VALUES ('Bobby')
INSERT INTO MyDrivers (DriverName) VALUES ('Carl')
INSERT INTO MyDrivers (DriverName) VALUES ('Daryl')
INSERT INTO MyDrivers (DriverName) VALUES ('Ed')
INSERT INTO MyDrivers (DriverName) VALUES ('Frank')
INSERT INTO MyDrivers (DriverName) VALUES ('George')
INSERT INTO MyDrivers (DriverName) VALUES ('Hal')
INSERT INTO MyDrivers (DriverName) VALUES ('Ichabod')
INSERT INTO MyDrivers (DriverName) VALUES ('Justin Timberlake')

SELECT * FROM MyOrders O
INNER JOIN MyDrivers D
    ON D.MyDriverID = ...? substring()? patindex()?
WHERE O.MyOrderID = 1

ここでの望ましい結果は、MyOrderID 1 に対して、結果として 5 つの行を受け取ることです。同じ注文の詳細リストで、この注文に割り当てられた 5 人のドライバーごとに 1 つです。リスト (NULL、''、' '、' ') がない場合は、行を返したくありません。**ユーザーがこのフィールドの値を削除してスペースを残す場合があるため、TRIM を使用する必要があると想定しています。しかし、彼らは常に必要なコンマを追加するので、少なくともそれは...

どうすればいいのかわかりません。SQL については、まだまだ学ぶことがたくさんあります。役立つヒントやアイデアをいただければ幸いです。

事前にどうもありがとうございました!

4

2 に答える 2