你們請幫我改寫這個使用子查詢重寫加入作爲此查詢的子查詢
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
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
謝謝,但我沒有加入nead –
你可以給我一個更多的迴應,而不使用連接 –
你想要在SELECT列表中的兩列的數據。如果不加入這兩個表格,這是不可能的。 –
假設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
附:儘管SQL的「兼容性枷鎖」(20世紀80年代的供應商支持這一點,併成爲標準等)允許同一個表中的兩列具有相同的名稱,但在實踐中這可能不是一個好主意。另外,我假設AN
來自表SPECIALIZARE
,但可能是錯字。
感謝您的答案,但它仍然dosent幫助我,我嘗試了很多方式,這是種的一個分配,使不使用連接,只有子查詢我知道它的困難,因爲我沒有張貼表格。我在這個鏈接上找到了一些參考,但是它的反例和是的,你可以做到這一點,而不使用連接,但我只是不知道它http://dev.mysql.com/doc/refman/5.0/en/rewriting-subqueries。 html 2 tabels Materii with Codmaterie and An and Specializare with Denumire –
爲了簡單起見,我只是想要從materi 2不同的表格中顯示denumire而不使用join或where –
@CalinSinea請解釋爲什麼你有這個要求! – dan1111
你可能可以用一個工會和一個小組做一些愚蠢的事情。例如:
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
這產生一行每codspec
,所以它不完全像一個連接。但你可以用行號來解決這個問題。我會把它作爲你的鍛鍊,因爲這顯然是家庭作業。
你只是想要兩個表中的不同行嗎?
SELECT
SQ.DENUMIRE, SQ.AN
FROM (
SELECT
DENUMIRE, AN
FROM
SPECIALIZARE
UNION
SELECT
DENUMIRE, AN
FROM
MATERII
) SQ
ORDER BY
SQ.DENUMIRE
...這不會給他相同的結果集佈局,所以我懷疑這是他想要的。 –
你在做什麼需要聯合操作的本質。我認爲你應該更新你的問題,解釋你到底有什麼問題。然後我們可以幫助解決問題。 – dan1111
請注意,「子查詢」僅從其中一個表創建中間結果集。但是你仍然需要加入子查詢的結果來將它與另一個表連接起來。 – dan1111