1

私は、、、、、、テーブルを持っordersていますorder_attachmentsorder_preship_checkorder_preship_check_attachmentorder_logorder_log_attachments

これらの列の唯一の共通点は order_id です。現在、クエリでは、次のクエリを使用して、タイプ 1 とタイプ 2 の order_attachments のみをチェックしています。

SELECT
    COUNT(file_id) AS totalFiles
FROM
    orders_files
WHERE
    order_id = '88125'
AND attachment_type IN ('1', '2')

したがって、返された場合は、その順序で ATTACHMENTS アイコンを表示します。これで、出荷前の添付ファイルとログの添付ファイルも組み合わせる必要があります。追加のチェックはありません。両方の個々のクエリは次のとおりです。

SELECT
    COUNT(file_id) AS totalFiles
FROM
    orders_preship_check_attachment
WHERE
    order_id = '88125'

SELECT
    COUNT(id) AS totalFiles
FROM
    orders_log_attachment
WHERE
    order_id = '88125'

これら 3 つのクエリを 1 つのクエリに組み合わせる必要があります。したがって、各テーブルに 1 つのレコードがある場合、3 のカウントを取得するだけで済みます。3 であっても重要ではありません。これらのレコードのいずれかに添付ファイルがある場合は、TRUE または FALSE のアイコンを表示する必要があります。より明確になることを願っています

4

2 に答える 2

1

UNION または UNION ALL を使用しますが、これは同じ型と列数である必要があります。

コード例:

    SELECT 'Customer' AS type, id, name FROM customer
    UNION ALL
    SELECT 'Supplier', id, name FROM supplier

クエリに含まれる列の数が異なる場合は、結合を使用してみてください。

于 2013-03-01T07:41:18.377 に答える
1

これを試して

SELECT SUM(totalFiles) AS totalFiles
  FROM (
    SELECT COUNT(file_id) AS totalFiles
      FROM orders_files
     WHERE order_id = '88125' AND
           attachment_type IN ('1', '2')
     UNION ALL
    SELECT COUNT(file_id) AS totalFiles
      FROM orders_preship_check_attachment
     WHERE order_id = '88125'
     UNION ALL
    SELECT COUNT(id) AS totalFiles
      FROM orders_log_attachment
     WHERE order_id = '88125'
    ) t

また

SELECT COUNT(file_id) AS totalFiles
  FROM (
    SELECT file_id
      FROM orders_files
     WHERE order_id = '88125' AND
           attachment_type IN ('1', '2')
     UNION ALL
    SELECT file_id
      FROM orders_preship_check_attachment
     WHERE order_id = '88125'
     UNION ALL
    SELECT id
      FROM orders_log_attachment
     WHERE order_id = '88125'
    ) t
于 2013-03-01T07:44:28.127 に答える