Mysql
 sql >> база данни >  >> RDS >> Mysql

сложна SQL заявка, много към много

Нещо подобно.

Select people.id, people.name, count(interest.id)
from people
left join people_interests on people.id = people_interests.peopleid 
left join interests on people_interests.interestid = interests.interest.id
where interests.id in (select id from interests where interests.peopleid = @inputuserid)
group by people.id, people.name
order by count(interest.id)

На английски (което може или не може да направи по-ясно.)

  • Изберете името на лицето и броя интереси, които споделя
  • От таблицата с хора
  • Присъединете се към таблицата с интереси, така че тази таблица
  • Само интересите на човека, който се опитваме да съпоставим.
  • (група по хора
  • и подредете по броя на съвпадащите интереси.)

Актуализирано без подзаявката, но по-малко ясно

Select people.id, people.name, count(interest.id)
from people
left join people_interests on people.id = people_interests.peopleid 
left join interests on people_interests.interestid = interests.interest.id
inner join interest i2 on (interests.id = i2.id and i2.people_id = @inputuserid)
group by people.id, people.name
order by count(interest.id)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване с родната заявка за Hibernate не работи за java.util.Date

  2. Mysql find_in_set наклонена черта ( / ) разделител

  3. Как да четете и нулирате AUTO_INCREMENT в MySQL

  4. Как да създадете база данни на MySQL от дъмп файл в скрипт за очакване/TCL?

  5. Как да изтеглите данни от база данни на MySQL в таблица със стилове в собствен файл/папка?