verschachtelte Abfrage

verschachtelte Abfrage

am 18.02.2007 23:13:41 von mmollay

Liebe mysql-meister,

Habe 2 Tabellen: firma, rechnungen

Wenn sich Einträge in "firma" befinden, die mit "rechnungen" in
Verbindung stehen werden diese ausgegeben.
Wenn sich allerdings Einträge in der Tabelle "firma" befinden, die mit
noch keiner der Einträge in "rechnungen" in Verbindung stehen, werden
keine Einträge ausgebeben, verständlicherweise :)
Wie kann ich bewerkstelligen, dass auch solche Einträge auch mit
aufgelistet werden.

Bsp:
SELECT SUM( betrag ) AS summe, name FROM firmen
INNER JOIN rechnungen ON ( rechnungen.id_liefer =3D firmen.id)
GROUP BY firmen.id

Danke für die Hilfe

Alles Liebe Martin °^°

Re: verschachtelte Abfrage

am 18.02.2007 23:48:20 von Florian Laws

On 2007-02-18, mmollay wrote:
> Liebe mysql-meister,
>
> Habe 2 Tabellen: firma, rechnungen
>
> Wenn sich Einträge in "firma" befinden, die mit "rechnungen" in
> Verbindung stehen werden diese ausgegeben.
> Wenn sich allerdings Einträge in der Tabelle "firma" befinden, die mit
> noch keiner der Einträge in "rechnungen" in Verbindung stehen, werden
> keine Einträge ausgebeben, verständlicherweise :)
> Wie kann ich bewerkstelligen, dass auch solche Einträge auch mit
> aufgelistet werden.
>
> Bsp:
> SELECT SUM( betrag ) AS summe, name FROM firmen
> INNER JOIN rechnungen ON ( rechnungen.id_liefer = firmen.id)
> GROUP BY firmen.id

Mit einem LEFT JOIN statt des INNER JOIN.

Grüße,

Florian

Re: verschachtelte Abfrage

am 19.02.2007 00:39:35 von mmollay

On 18 Feb., 23:48, Florian Laws wrote:
> On 2007-02-18, mmollay wrote:
>
>
>
> > Liebe mysql-meister,
>
> > Habe 2 Tabellen: firma, rechnungen
>
> > Wenn sich Einträge in "firma" befinden, die mit "rechnungen" in
> > Verbindung stehen werden diese ausgegeben.
> > Wenn sich allerdings Einträge in der Tabelle "firma" befinden, die mit
> > noch keiner der Einträge in "rechnungen" in Verbindung stehen, werden
> > keine Einträge ausgebeben, verständlicherweise :)
> > Wie kann ich bewerkstelligen, dass auch solche Einträge auch mit
> > aufgelistet werden.
>
> > Bsp:
> > SELECT SUM( betrag ) AS summe, name FROM firmen
> > INNER JOIN rechnungen ON ( rechnungen.id_liefer =3D firmen.id)
> > GROUP BY firmen.id
>
> Mit einem LEFT JOIN statt des INNER JOIN.
>
> Grüße,
>
> Florian

danke das geht soweit, allerdings wenn ich jetzt ein AND id_user=3D5
anhängen will um gewisse Einschränkungen zu bewirken (bsp.: nur firmen
mit der id_user 5), wird trotzdem alles uneingeschränkt angezeigt.

SELECT SUM( betrag ) AS summe, name FROM firmen
LEFT JOIN rechnungen ON rechnungen.id_liefer =3D firmen.id
AND firmen.id_user=3D5
GROUP BY firmen.id

Re: verschachtelte Abfrage

am 19.02.2007 06:18:29 von Thomas Rachel

mmollay wrote:
^^^^^^^ ...!

> danke das geht soweit, allerdings wenn ich jetzt ein AND id_user=5
> anhängen will um gewisse Einschränkungen zu bewirken (bsp.: nur firmen
> mit der id_user 5), wird trotzdem alles uneingeschränkt angezeigt.
>
> SELECT SUM( betrag ) AS summe, name FROM firmen
> LEFT JOIN rechnungen ON rechnungen.id_liefer = firmen.id
> AND firmen.id_user=5
> GROUP BY firmen.id

Einschränkungen macht man mit WHERE, nicht mit ON. Ins ON gehören nur die
Verknüpfungebedingungen. Alles andere gehört ins WHERE. AFAIR steht das
auch irnkwo im Handbuch an der entsprechenden Stelle.


Thomas
--
Jabber-ID: glglgl@amessage.info (keine Email-Adresse!)
Warum Jabber, was ist das und wie geht das?
http://de.wikibooks.org/wiki/Jabber-Kompendium:_Schnelleinst ieg