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

Защо моята заявка връща много резултати?

Липсва Ви условие за присъединяване между candidates и jobs , така че получавате декартово произведение между двете таблици. Освен това има проблем с условието за присъединяване на skill_names , където и двете колони са еднакви (това отново генерира декартово произведение).

SELECT can.* , co.*, j.*, sn.*
FROM candidates AS can
JOIN jobs AS j ON j.candidate_id = can.candidate_id --> here: missing join condition
JOIN companies AS co ON j.company_id = co.company_id
JOIN skills AS s ON s.job_id = j.job_id
JOIN skill_names AS sn ON sn.skill_id = s.skill_id  --> and here: wrong join condition

Много RDBMS биха предизвикали синтактична грешка при JOIN без ON клауза (ако искате декартово произведение, трябва да сте изрични за него, като използвате CROSS JOIN ), но, уви, не и MySQL.

Що се отнася до този въпрос:

Не. Докато използвате inner join s (не left join s), редът на свързване няма значение за планиращия заявки, който ще ги пренареди в реда, който смята за по-ефективен.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. избиране на редове с идентификатор от друга таблица

  2. @Column(unique=true) изглежда не работи

  3. Настройте база данни и създайте потребител само за четене в AWS Redshift и Mysql

  4. дясното съединение е равно на лявото присъединяване?

  5. Създаване на булева колона в MySQL с false като стойност по подразбиране?