【问题标题】:Show, Join, Count, Grouping 6 Tables on PHP MySQL在 PHP MySQL 上显示、连接、计数、分组 6 个表
【发布时间】:2017-02-01 09:14:10
【问题描述】:

我在使用 php 和 mysql 显示、连接和分组 6 个表时遇到问题。

我的桌子

  • loker_job:id_job、slug_job、职位、部门、级别、位置

  • loker_department: id_department, name_department

  • loker_level: id_level, name_level

  • loker_location:id_location,name_location

  • loker_applicant:id_job,文件

  • loker_user:id_user,姓名

我的查询

SELECT 
loker_job.slug_job,
loker_level.name_level,
loker_location.name_location,
loker_department.name_department,
loker_user.name,
loker_applicant.file,
count(*) as total_applicant
FROM
loker_job
LEFT JOIN loker_department ON loker_department.id_department =    loker_job.department
LEFT JOIN loker_level ON loker_level.id_level = loker_job.`level`
LEFT JOIN loker_location ON loker_location.id_location = loker_job.location
LEFT JOIN loker_user ON loker_user.id_user = loker_job.publisher
LEFT JOIN loker_applicant ON loker_applicant.id_job = loker_job.slug_job
GROUP by loker_job.slug_job

我想要这样的结果:

+----------+-----------------+-----------------+---------------+----------------------+-----------------+
| slug_job | name_level      | name_department | name_location | name_position        | total applicant |
+----------+-----------------+-----------------+---------------+----------------------+-----------------+
| 1111     | General Manager | Marketing       | America       | Vice General Manager | 3               |
| 2222     | E-officer       | Ecommerce       | Japan         | Officer              | 1               |
| 3333     | General Manager | Sales           | Rusia         | Vice General Manager | 0               |
| 4444     | General Manager | Marketing       | America       | Vice General Manager | 3               |
+----------+-----------------+-----------------+---------------+----------------------+-----------------+

结果

但是,我得到的结果是:

  • 尽管从 db 中显示为 0 或什么都没有,但总有一行或多行结果为 1 个申请人
  • 总行不正确,总数据中始终为 -1

任何帮助将不胜感激,谢谢

【问题讨论】:

    标签: php mysql join count group-by


    【解决方案1】:

    “loker_user”表的第一个组和关系表的左外连接。并如下所述:

    SELECT loker_job.slug_job, loker_level.name_level, loker_location.name_location,
    loker_department.name_department, A.name, loker_applicant.file, IFNULL(A.total_applicant,0) as total_applicant
    FROM loker_job
    LEFT OUTER JOIN loker_department ON loker_department.id_department =   loker_job.department
    LEFT OUTER JOIN loker_level ON loker_level.id_level = loker_job.`level`
    LEFT OUTER JOIN loker_location ON loker_location.id_location = loker_job.location
    LEFT OUTER JOIN loker_applicant ON loker_applicant.id_job = loker_job.slug_job
    LEFT OUTER JOIN (
    select id_user,name, count(*) as total_applicant from loker_user group by id_user, name
    ) as A ON A.id_user = loker_job.publisher
    

    【讨论】:

    • 它在“on 子句”中显示未知列“a.publisher”
    • 将列名从“A.loker_job”更新为“loker_job.loker_job”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    相关资源
    最近更新 更多