SQL: how to compare data in different rows and only select unique "pairs" assuming there are only two colums? -
SQL: how to compare data in different rows and only select unique "pairs" assuming there are only two colums? -
i have several tables (bold means primary key):
dancer(dancer_name, gender, age)
dance(dancer_name, dvd_id, song_title)
dvd(dvd_id, song_title, cost)
song(dancer_name, song_title, genre)
launch(dancer_name, dvd_id, year)
i want select pairs of dancers song appear in 1 or more dvds , each pair print out once.
this close , prints out same pair twice, names in different columns:
select distinct dancer1.dancer_name, dancer2.dancer_name, count(*) count dancer dancer1, dancer dancer2, dance dance1, dance dance2 dancer1.dancer_name = dance1.dancer_name , dancer2.dancer_name = dance2.dancer_name , dancer1.dancer_name <> dancer2.dancer_name , dance1.dvd_id = dance2.dvd_id grouping dancer1.dancer_name, dancer2.dancer_name;
so instead of getting
tom jon jon tom bob sam sam bob
i want
tom jon bob sam
if alter test dancer1.dancer_name <> dancer2.dancer_name
dancer1.dancer_name < dancer2.dancer_name
, should result want.
hovever, using names keys in dance table, don't need bring together dancer table, , query may simplified this:
select dance1.dancer_name, dance2.dancer_name, count(*) count dance dance1 inner bring together dance dance2 on dance1.dvd_id = dance2.dvd_id dance1.dancer_name < dance2.dancer_name grouping dance1.dancer_name, dance2.dancer_name
sql select group-by selection
Comments
Post a Comment