0

異なるテーブルの 2 つの列から最大値を取得する必要があります。たとえば、schoolorder と platterorder からの郊外の最大数。platterorder には normalclient にリンクする clientnumbers があり、schoolorder には school にリンクする clientnumbers があります。

私はこれを持っています:

SELECT MAX (NC.SUBURB) AS SUBURB
FROM normalClient NC
WHERE NC.CLIENTNO IN
(SELECT PO.CLIENTNO
FROM platterOrder PO
WHERE NC.CLIENTNO = PO.CLIENTNO)
GROUP BY NC.SUBURB
UNION
SELECT MAX (S.SUBURB) AS SCHOOLSUBURB
FROM school S
WHERE S.CLIENTNO IN
(SELECT S.CLIENTNO
FROM schoolOrder SO
WHERE S.CLIENTNO = SO.CLIENTNO)
GROUP BY S.SUBURB)

ただし、それは大皿注文から最大を取得し、学校の最大と結合します。私が必要とするのは、両方を合わせた最大値です。

=================================================

混乱させてごめんなさい!

出力は 1 行のみにする必要があります。通常のクライアントと学校のクライアントの両方で最大注文数が発生した郊外である必要があります。注文は、通常のクライアントの場合はプラッター オーダー、学校のクライアントの場合はスクール オーダーで表示されます。つまり、直接関係のない 2 つのテーブルの最大値です。

それが少し解消されることを願っています!

4

1 に答える 1

4

私があなたの質問を正しく理解している場合、フィールドの が必要なGROUP BYので、 a を使用する必要はありません。の代わりにMAXa を使用するように構文も変更しましたが、同じように機能するはずです。JOINININ

SELECT MAX (NC.SUBURB) AS SUBURB
FROM normalClient NC
    JOIN platterOrder PO ON NC.ClientNo = PO.ClientNo
UNION
SELECT MAX (S.SUBURB) AS SCHOOLSUBURB
FROM school S
    JOIN schoolOrder SO ON S.CLIENTNO = SO.CLIENTNO

テーブル構造を知らず、サンプル データを確認することなく、MAXから の結果を取得することをお勧めできる最善の方法UNIONは、 を使用することsubqueryです。より良い方法があるかもしれませんがJOINs、質問から推測するのは困難です:

SELECT MAX(Suburb)
FROM (
    SELECT MAX (NC.SUBURB) AS SUBURB
    FROM normalClient NC
        JOIN platterOrder PO ON NC.ClientNo = PO.ClientNo
    UNION
    SELECT MAX (S.SUBURB)
    FROM school S
        JOIN schoolOrder SO ON S.CLIENTNO = SO.CLIENTNO
) T
于 2013-06-02T12:36:17.250 に答える