MySQL:如果 JOIN 期间缺少表行,则为 "Ignore"

标签 mysql left-join

我正在对三个表执行 LEFT JOIN,其中表“time”不一定包含任何匹配的行。但是,如果在该表中找不到匹配的行,则链接的数据就会消失。

SELECT
    w.date AS worker_date,
    w.name AS worker_name,
    w.address AS worker_address,
    w.zip AS worker_zip,
    w.place AS worker_place,
    w.phone AS worker_phone,
    w.email AS worker_email,
    w.company AS worker_company,
    w.accessibility AS worker_accessibility,
    c.date AS client_date,
    c.name AS client_name,
    c.address AS client_address,
    c.zip AS client_zip,
    c.place AS client_place,
    c.phone AS client_phone,
    c.email AS client_email,
    c.web AS client_web,
    c.contact AS client_contact,
    j.date AS job_date,
    j.client_id,
    j.worker_id,
    j.name AS job_name,
    j.description AS job_description,
    j.type AS job_type,
    j.status AS job_status,
    j.proof AS job_proof,
    j.deadline AS job_deadline,
    j.price AS job_price,
    j.final_client AS job_final_client,
    SUM(t.hours) AS time_hours
FROM
    jobs AS j
LEFT JOIN (
    workers AS w,
    clients AS c,
    time AS t
) ON (
    w.id = j.worker_id AND
    c.id = j.client_id AND
    j.id = t.job_id
) GROUP BY
    j.id;

我怎样才能做到这一点?

提前谢谢您。

最佳答案

<罢工>添加

<罢工>

<罢工> WHERE t.job_id IS NOT NULL之前GROUP BY

尝试替换

SUM(t.hours) AS time_hours

(SELECT IFNULL(SUM(t.hours),0) FROM time WHERE time.job_id=j.job_id) AS time_hours

并从连接中删除时间

关于MySQL:如果 JOIN 期间缺少表行,则为 "Ignore",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4238251/

相关文章:

mysql - 如何从 MySQL 中的存储过程中检索多行?

C#连接MySQL

sql - 为什么我的 Count on joined tables 不正确?

MYSQL 表,table_tr SELECT 默认语言 WHEN 翻译不可用

mysql - 从 3 个左连接选择查询非常慢

mysql - 如何从 2 个表中选择所有连接的行,包括 null

mysql - 这个自左连接返回的记录比我预期的要多

php - 查询列在另一个表中的位置 - laravel

java - eclipse android 通过使用 HTTP 将 java 值传递给 php

php - 在 PHP 中连接数组(如 MySQL 连接)