0

必要なデータを選択するためのクエリの書き方を理解するのに苦労しています。

つまり、問題は次のとおりです。1 つのテーブルと、外部キーを持つ 3 つのテーブルがあります。どのフィールドがnullでないかに基づいて、最初のテーブルからすべてのフィールドを選択し、他の3つのテーブルから1つをエイリアスとして選択する必要があります。ほとんどの場合、3 つのテーブルのうち 2 つに指定された列の null 値がありますが、null 以外の値が 2 つある場合は、最初に見つかったものを選択します。

うまく説明できていないかもしれませんが、例を挙げて説明します。このメインテーブルがあるとしましょう

Table_1
TableOneID int(11),
SomeOtherData text

Table_2
TableTwoID int(11),
TableOneID int(11),
TableTwoValue varchar(250)

Table_3
TableThreeID int(11),
TableOneID int(11),
TableThreeValue varchar(250)

Table_4
TableFourID int(11),
TableOneID int(11),
TableFourValue varchar(250)

だから私は何かをしたい

SELECT *, (HERE TO SELECT FIRST NON NULL VALUE FROM Table_2(TableTwoValue), 
Table_3(TableThreeValue) or Table_4(TableFourValue)) AS ExtraField FROM Table_1
LEFT JOIN Table_2 USING(TableOneID) ..... LEFT JOIN Table_4 USING(TableOneID);

これが起こる可能性はありますか?:)

4

2 に答える 2

0

最も簡単な方法は、データベース構造を変更することです:

Table_1
TableOneID int(11),
SomeOtherData text

Table_X
ID int(11),
TableOneID int(11),
TableTwoValue varchar(250),
number int(11)

番号には、テーブル番号 (1、2、3 など) を入れます。すると、クエリがはるかに簡単になります。

于 2013-07-15T17:49:33.307 に答える
0

私は解決策を見つけたと思います。

COALESCEを使用する必要があります

SELECT COALESCE(TableTwoValue, TableThreeValue, TableFourValue) 
AS ExtraField FROM ...
于 2013-07-15T18:30:18.010 に答える