2017-01-02 57 views
-1

我有這個SQL,但返回的結果相同,並且empresas表有超過15,000行,如果我使用JOIN返回170行,並且如果我使用LEFT JOIN返回15,000行,但在更多的時間:視圖和連接MySQL的問題

SELECT 
`e`.`id_empresa` AS `id_empresa`, 
`e`.`nome_fantasia` AS `nome_fantasia`, 
`e`.`email` AS `email`, 
`e`.`slug` AS `slug`, 
`e`.`tags` AS `tags`, 
`e`.`endereco` AS `endereco`, 
`e`.`telefone` AS `telefone`, 
`e`.`site_empresa` AS `site_empresa`, 
`e`.`atividade_principal` AS `atividade_principal`, 
`e`.`responsavel` AS `responsavel`, 
`e`.`observacoes` AS `observacoes`, 
`e`.`matriz` AS `matriz`, 
`e`.`filial` AS `filial`, 
`e`.`template` AS `template`, 
`e`.`template_cor` AS `template_cor`, 
concat(`c`.`nome`, '/', `c`.`uf`) AS `cidade`, 
`c`.`id` AS `IDCIDADE`, 
`p`.`plano` AS `plano`, 
`p`.`logo` AS `logo`, 
`p`.`data_vencimento` AS `data_vencimento`, 
sum(`a`.`nota_total`)/count(`a`.`id_empresa`) AS `total` 
FROM `empresas` `e` 
LEFT JOIN `empresas_avaliacao` `a` ON `e`.`id_empresa` = `a`.`id_empresa` 
LEFT JOIN `tb_cidades` `c` ON `e`.`cidade` = `c`.`id` 
LEFT JOIN `empresas_premium` `p` ON `e`.`id_empresa` = `p`.`id_empresa` 
GROUP BY `a`.`id_empresa` 
+0

你有問題要問? – Strawberry

回答

0

INNER JOIN會從一個表在第二表中的一些相關條目中的所有記錄

LEFT JOIN獲取所有記錄從左邊的鏈接表,但如果你有從RIGHT表中選擇一些列,如果沒有相關記錄,這些列將包含NULL。即使右表中沒有匹配,它也會返回左表中的所有行。

+0

我試圖在視圖中看到,並且返回的結果非常快,但是這不能解決我的問題 –