你们请帮我改写这个使用子查询重写加入作为此查询的子查询
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