1

データベースのクエリを作成する際に助けが必要です。

私は2つのテーブルを持っています、

(ホスト名、所有者、エンジニア、日付、ブランチ) で構成されるアセット

(id、name、address、region) で構成されるブランチ

branch.id は、明らかに外部キーである asset.branch に接続されている主キーです。

支店情報 (ID、名前、住所、地域) とその支店の資産数を表示するクエリを作成したいと考えていました。

私はこのクエリを試しました:

SELECT b.id, b.name, b.address, b.xcor, b.ycor, b.status, 
  COUNT(a.hostname) AS noofasset
FROM branch b, asset a 
WHERE a.branch = b.id
GROUP BY b.id;

一見うまくいきましたが、アセットが含まれていないブランチ情報を表示できませんでした。アセットが 0 のブランチも表示するクエリが必要です。

4

1 に答える 1

3
SELECT b.id, b.name, b.address, b.xcor, b.ycor, b.status, 
  COUNT(a.hostname) AS noofasset
FROM branch b
LEFT JOIN  asset a 
  on a.branch = b.id
GROUP BY b.id, b.name, b.address, b.xcor, b.ycor, b.status

LEFT 結合は、アセットが存在するかどうかに関係なく、すべてのブランチを含めることを意味します。

このサイトは、左、右のアウターフルと結合の種類を視覚的に説明しています..私はそれが好きでした:D

あなたがより精通している構文を使用する(私は思う)

SELECT b.id, b.name, b.address, b.xcor, b.ycor, b.status, 
  COUNT(a.hostname) AS noofasset
FROM branch b, asset a 
WHERE a.branch(+) = b.id
GROUP BY b.id;
于 2012-04-17T02:05:27.253 に答える