Heim  >  Fragen und Antworten  >  Hauptteil

sql, java. Ich bitte um Rat.

Warum verwende ich die Unternehmensnummer und die Benutzernummer, um alle Abteilungen und die Anzahl der Personen in der Abteilung abzufragen, und es wird nur ein Datenelement zurückgegeben?
Das Design der Datenbanktabelle ist: Die Benutzertabelle und die Unternehmenstabelle sind eins. zu eins, und die Unternehmenstabelle und die Abteilungstabelle sind eins zu viele Ja,
Das Folgende ist die SQL, die ich geschrieben habe:

SELECT count(c.id) AS userCount,
b.company_id AS companyId,
b.`name` AS `name`

VON

company_branch b

LEFT JOIN company_personnel_file c ON c.branch_id = b.id
AND c.user_id =55
AND c. STATUS = 1
WHERE

1 = 1

AND b.company_id =10043
GROUP BY

b.id

LIMIT 0,
10;

某草草某草草2644 Tage vor730

Antworte allen(1)Ich werde antworten

  • 为情所困

    为情所困2017-06-28 09:24:29

    由于你没有说明,企业表和部门表的表名是什么,而且SQL中只出现了一个和企业或部门有关的表,我只能猜测它是部门表。
    基于这个假设,来说下你的SQL。你的SQL有以下几个问题:

    1. 你的WHERE 1 = 1是不需要的

    2. LEFT JOIN里的ON语句,是用来限定左联上来的这个表的数据的,而不是用来限定结果数据的,要限定结果数据的话得用WHERE子句

    修改后的SQL如下:

    SELECT
        COUNT(c.id) userCount,
        b.company_id companyId,
        b.name name
    FROM
        company_branch b
    LEFT JOIN
        company_personnel_file c ON c.branch_id = b.id
    WHERE
        c.user_id = 55 AND
        c.STATUS = 1 AND
        b.company_id = 10043
    GROUP BY
        b.id
    LIMIT 0, 10;

    Antwort
    0
  • StornierenAntwort