サブクエリを使用してこれを書き直すのを手伝ってくれませんか
SELECT
S.DENUMIRE, M.DENUMIRE, AN
FROM
SPECIALIZARE S
JOIN
MATERII M ON S.CODSPEC = M.CODSPEC
ORDER BY
S.DENUMIRE
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
組合や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
されるため、結合とはまったく異なります。しかし、おそらくそれに対処するために行番号を使って何かをすることができます。これは明らかに宿題なので、演習として残しておきます。
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
が、タイプミスである可能性があります。
両方のテーブルから異なる行が必要ですか?
SELECT
SQ.DENUMIRE, SQ.AN
FROM (
SELECT
DENUMIRE, AN
FROM
SPECIALIZARE
UNION
SELECT
DENUMIRE, AN
FROM
MATERII
) SQ
ORDER BY
SQ.DENUMIRE