4

わかりました、私は4つのテーブルを持っています:

表 1: "f_withholdings"

代替テキスト

表 2: "f_wh_list"

代替テキスト

表 3: "f_rpayments"

代替テキスト

表 4: 「f_rp_list」

代替テキスト

表 1 と表 2 はwh_idフィールドで、表 3 と表 4 はrp_id図のように で結ばれています。

次のように、両方のテーブルを 1 つに結合選択します。

SELECT
`wh_list_id`,
`wh_name` AS `name`,
`wh_list_date` AS `date`,
`wh_list_amount` AS `amount`,
`wh_list_pending` AS `pending`,
`wh_list_comment` AS `comment`
FROM
`f_wh_list` LEFT JOIN `f_withholdings` ON `f_wh_list`.`wh_id` = `f_withholdings`.`wh_id`

UNION ALL

SELECT
`rp_list_id`,
`rp_name` AS `name`,
`rp_list_date` AS `date`,
`rp_list_amount` AS `amount`,
`rp_list_pending` AS `pending`,
`rp_list_comment` AS `comment`
FROM `f_rp_list` LEFT JOIN `f_rpayments` ON `f_rp_list`.`rp_id` = `f_rpayments`.`rp_id`

そして私はこれを得る:

代替テキスト

wh_list_id結果テーブルの最初の SELECT からの id フィールドは 1 つだけですが、rp_list_id

以下のように、両方の ID を結果テーブルに含めたいと思います。

代替テキスト

ありがとう!

4

2 に答える 2

6

nullそれぞれから欠落している列として選択するだけです。

SELECT
`wh_list_id`,
null AS `rp_list_id`,
`wh_name` AS `name`,
`wh_list_date` AS `date`,
`wh_list_amount` AS `amount`,
`wh_list_pending` AS `pending`,
`wh_list_comment` AS `comment`
FROM
`f_wh_list` LEFT JOIN `f_withholdings` ON `f_wh_list`.`wh_id` = `f_withholdings`.`wh_id`

UNION ALL

SELECT
null as `wh_list_id`,
`rp_list_id`,
`rp_name` AS `name`,
`rp_list_date` AS `date`,
`rp_list_amount` AS `amount`,
`rp_list_pending` AS `pending`,
`rp_list_comment` AS `comment`
FROM `f_rp_list` LEFT JOIN `f_rpayments` ON `f_rp_list`.`rp_id` = `f_rpayments`.`rp_id`
于 2010-11-22T00:34:13.397 に答える
1

各クエリに対応する null 列を追加するだけです (UNION は列の位置に基づいて機能し、名前やエイリアスは気にしません)。

SELECT
`wh_list_id`,
NULL,
...

SELECT
NULL,
`rp_list_id`,
...

ID を 1 つの列に保持し、ID がどのクエリからのものかを指定するフィールドを追加する方が少し良い場合があります (SELECT 'wh_list', ...たとえば)。

于 2010-11-22T00:34:54.357 に答える