Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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
Sql 类似的_Sql - Fatal编程技术网

Sql 类似的

Sql 类似的,sql,Sql,我有5张桌子: Artists (artistID: int, name: varchar(255)) SimilarArtists (artistID: int, simArtistID: int, weight: int) Albums (albumID: int, artistID: int, name: varchar(255)) Tracks (trackID: int, artistID: int, name: varchar(255), length: int) Trac

我有5张桌子:

 Artists (artistID: int, name: varchar(255))
 SimilarArtists (artistID: int, simArtistID: int, weight: int)
 Albums (albumID: int, artistID: int, name: varchar(255))
 Tracks (trackID: int, artistID: int, name: varchar(255), length: int)
 TrackLists (albumID: int, trackID: int, trackNum: int)
找到所有与莫格威更相似而非涅盘的艺术家的名字(这意味着他们与莫格威的相似程度更大)

暴力查询:),请检查空值

select * from (  
  select 
    (select weight from similiarartists sa, artists aa where sa.simartistid = aa.artistid and sa.artistid = a.artistid and aa.name = 'Nirvana') nirvana,
    (select weight from similiarartists sa, artists aa where sa.simartistid = aa.artistid and sa.artistid = a.artistid and aa.name = 'Mogwai') mogwai,
    a.*
 from artists a
) where a.mogwai > a.nirvana

这是我的尝试

select *
from artists a
left join 
(select sa.artistid, weight from similiarartists sa, artists aa where sa.simartistid =  aa.artistid and sa.artistid = a.artistid and aa.name = 'Nirvana') nirvana on nirvana.artistid = a.artistid
left join 
(select sa.artistid, weight from similiarartists sa, artists aa where sa.simartistid = aa.artistid and sa.artistid = a.artistid and aa.name = 'Mogwai') mogwai on mogwai.artistid = a.artistid
where mogwai.weight > nirvana.weight;

没有足够的信息来回答这个问题。请提供一些样本数据。特别是,表
是否是可交换的,也就是说,如果表中的(A,B)是(B,A)?而且,不在表中是不是证明相似性是
0
还是表中的所有对?
select *
from artists a
left join 
(select sa.artistid, weight from similiarartists sa, artists aa where sa.simartistid =  aa.artistid and sa.artistid = a.artistid and aa.name = 'Nirvana') nirvana on nirvana.artistid = a.artistid
left join 
(select sa.artistid, weight from similiarartists sa, artists aa where sa.simartistid = aa.artistid and sa.artistid = a.artistid and aa.name = 'Mogwai') mogwai on mogwai.artistid = a.artistid
where mogwai.weight > nirvana.weight;