0

サブクエリを使用してこれを書き直すのを手伝ってくれませんか

SELECT 
    S.DENUMIRE, M.DENUMIRE, AN
FROM 
    SPECIALIZARE S
JOIN 
    MATERII M ON S.CODSPEC = M.CODSPEC
ORDER BY 
    S.DENUMIRE
4

4 に答える 4

1
SELECT 
    S.DENUMIRE,
    M.DENUMIRE,
    AN
FROM SPECIALIZARE S
JOIN (
    SELECT
        DENUMIRE,
        CODSPEC
    FROM MATERII
) AS M
    ON S.CODSPEC = M.CODSPEC
ORDER BY S.DENUMIRE
于 2012-12-13T08:48:57.780 に答える
0

組合やgroupbyで愚かなことをすることができるかもしれません。例えば:

select max(s_denumire) as s_denumire,
       max(m_denumire) as m_denumire,
       codspec
    from (
        select denumire as s_denumire, null as m_denumire, codspec 
            from specializare
        union all
        select null as s_denumire, denumire as m_denumire, codspec 
            from materii
    )
    group by codspec

これにより、ごとに1つの行が生成codspecされるため、結合とはまったく異なります。しかし、おそらくそれに対処するために行番号を使って何かをすることができます。これは明らかに宿題なので、演習として残しておきます。

于 2012-12-13T13:12:48.460 に答える
0

DENUMIREが整数であると仮定します。

SELECT S.DENUMIRE, 1 DENUMIRE, AN
  FROM SPECIALIZARE S
 WHERE EXISTS (
               SELECT * 
                 FROM MATERII M 
                WHERE S.CODSPEC = M.CODSPEC
                      AND M.DENUMIRE = 1
              )
UNION
SELECT S.DENUMIRE, 2 DENUMIRE, AN
  FROM SPECIALIZARE S
 WHERE EXISTS (
               SELECT * 
                 FROM MATERII M 
                WHERE S.CODSPEC = M.CODSPEC
                      AND M.DENUMIRE = 2
              )
UNION
SELECT S.DENUMIRE, 3 DENUMIRE, AN
  FROM SPECIALIZARE S
 WHERE EXISTS (
               SELECT * 
                 FROM MATERII M 
                WHERE S.CODSPEC = M.CODSPEC
                      AND M.DENUMIRE = 3
              )

UNION
...

など、すべての整数値について...もちろん実現可能ではありません。

参加が必要です!JOIN単に教育上の理由でキーワードを避けたい場合は、次のようにします。

SELECT 
    S.DENUMIRE, M.DENUMIRE, AN
FROM 
    SPECIALIZARE S, MATERII M 
WHERE
    S.CODSPEC = M.CODSPEC
ORDER BY 
    S.DENUMIRE

ps SQL の「互換性の束縛」(1980 年代にベンダーがこれをサポートし、標準になったなど) により、同じテーブル内の 2 つの列に同じ名前を付けることができますが、実際にはおそらく良い考えではありません。ANまた、テーブルからのものであると想定していますSPECIALIZAREが、タイプミスである可能性があります。

于 2012-12-13T09:05:07.327 に答える
0

両方のテーブルから異なる行が必要ですか?

SELECT
    SQ.DENUMIRE, SQ.AN
FROM (
    SELECT
        DENUMIRE, AN
    FROM 
        SPECIALIZARE

    UNION

    SELECT
        DENUMIRE, AN
    FROM 
        MATERII
) SQ
ORDER BY
    SQ.DENUMIRE
于 2012-12-13T17:28:43.817 に答える