Mysql
 sql >> Baza danych >  >> RDS >> Mysql

złożone zapytanie SQL, wiele do wielu

Coś takiego.

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)

W języku angielskim (co może, ale nie musi, wyjaśniać.)

  • Wybierz imię i nazwisko osoby oraz liczbę wspólnych zainteresowań
  • Od stołu ludzi
  • Dołącz do tabeli zainteresowań tak, aby ta tabela
  • To tylko interesy osoby, którą staramy się dopasować.
  • (grupuj według osób
  • i uporządkuj według liczby pasujących zainteresowań).

Zaktualizowano bez zapytania podrzędnego, ale mniej przejrzyste

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. Jak uzyskać wartość z jednej kolumny tabeli, gdy w połączeniu sql istnieją dwie kolumny o tej samej nazwie?

  2. Oblicz percentyl na podstawie częstotliwości w MySQL

  3. Kategorie rekurencyjne z jednym zapytaniem?

  4. Jak pozyskiwać i przetwarzać rekordy mysql za pomocą Airflow?

  5. czy obecność gwiazdki w zaznaczeniu wyklucza inne kolumny?