Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql上转换子查询的连接_Mysql_Sql_Subquery - Fatal编程技术网

在mysql上转换子查询的连接

在mysql上转换子查询的连接,mysql,sql,subquery,Mysql,Sql,Subquery,我需要更改以下代码以使用子查询: SELECT artist.name AS Banda, album.title AS Album, track.name AS Canción FROM artist INNER JOIN album ON artist.artistid = album.artistid INNER JOIN track ON album.albumid = track.albumid; 到目前为止,我一直在尝试的是: SELECT artist.name AS Band

我需要更改以下代码以使用子查询:

SELECT artist.name AS Banda, album.title AS Album, track.name AS Canción 
FROM artist
INNER JOIN album
ON artist.artistid = album.artistid
INNER JOIN track
ON album.albumid = track.albumid;
到目前为止,我一直在尝试的是:

SELECT artist.name AS Banda, album.title AS Album, track.name AS Canción
FROM artist, album,track
WHERE artist.artistid IN (SELECT album.artistid FROM album, track where album.albumid = track.albumid);

在MySQL中不使用
JOIN
相当复杂:

select (select a.name from artist where a.artistid = t.artistid) as banda,
       t.albumname,
       t.Canción
from (select t.*,
             (select al.title from album al where al.albumid = t.albumid) as albumname,
             (select al.artistid from album al where al.albumid = t.albumid) as artistid
      from track t
     ) t;
要编写的查询:

select (select a.name
        from artist a
        where a.artistid in (select al.artistid
                             from album al
                             where al.albumid = t.albumid
                            )
       ) as banda,
       (select al.title
        from album al
        where al.trackid = t.trackid
       ) as album,
       t.name as Canción
from tract t;

不幸的是,MySQL通常无法识别嵌套的correlation子句引用。

连接是最好的/干净的解决方案。你为什么不必要地想把它复杂化?这只是为了学术目的的比较。非常感谢。我必须将t.trackid更改为t.albumid才能工作。@DexterNaru。我很惊讶你接受了一个已经加入的答案。这似乎与你的问题不一致。