php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.04.2008, 21:46  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard Subquery

N'Abend !

Ich quäle mich gerade mit MySQL-Subqueries rum und kriegs einfach nicht gebacken.

Es gibt folgende Tabellen:

e_2007 und e_2008 (mit jeweils den gleichen Spalten
id
fahrer_id
wert1
wert2
...

fahrerstamm
id
name
...


So nun möchte ich abfragen wieviele Einträge in Tabelle e_2007 und wieviele Einträge in Tabelle e_2008 es je fahrer_id gibt.

Wenn ich das für einen einzelnen Fahrer mache, krieg ich das hin, aber sobald ich die where Klausel weglasse ist Schicht im Schacht und ich erhalte die Meldung: "Subquery returns more than 1 row"
(Womit das Ding ja auch Recht hat ... )

Funktioniert: (bringt aber nur ein Ergebnis, hilft mir also nix)
Code:
SELECT 
  id, 
  (select count(*) from e_2007 where fahrer_id = '4' group by fahrer_id ) as co2007,
  (select count(*) from e_2008 where fahrer_id = '4' group by fahrer_id ) as co2008
FROM fahrerstamm
Kann mir jemand sagen wie ich den Befehl umschreiben muss, damit mir alle Fahrer ausgespuckt werden ?

Besten Dank schonmal im voraus !
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.04.2008, 22:03  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Hi,
zunächst mal sieht das nach schlechtem DB-Design aus wenn du 2 Tabellen mit angehängten Jahreszahlen hast...

zum Problem:
du kannst im Subquery auch auf Felder des "Eltern"-Querys zugreifen. Also
(SELECT .... WHERE fahrer_id = fahrerstamm.schlagmichtot ) AS ...
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 15.04.2008, 22:25  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard

Hallo,

funktioniert wunderbar, danke !

Code:
SELECT
  id,
  (select count(*) from e_2007 where fahrer_id = fahrerstamm.id group by fahrer_id ) as co2007,
  (select count(*) from e_2008 where fahrer_id = fahrerstamm.id group by fahrer_id ) as co2008
FROM fahrerstamm
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline   Mit Zitat antworten
Alt 15.04.2008, 23:02  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard

Hallo,

ich schon wieder ...

Das erste Problem ist gelöst, schon kommt das zweite:

ich möchte alle Treffer erhalten bei denen (co2007 + co200 > 0 ist. Also bei denen 2007 und 2008 mindestens ein Eintrag in einer der Tabellen ist.

mit
Code:
HAVING (co2007 + co2008) > 0
werden alle die "NULL" enthalten ignoriert. Ich hab's auch schon mit co2007/1 (also geteilt durch 1) versucht, hat aber nichts geholfen.

Gerechnet wird richtig, wenn ich das absetze:
Code:
HAVING (co2007 + co2008) > 10
krieg ich alle die mehr als 10 Einträge haben. (Somit ist der Ansatz nicht ganz falsch ... )

Lediglich die "NULL-er" werden ignoriert.

Kann mir nochmal jemand einen Tip geben, wie das nu geht ?

Besten Dank schonmal !
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline   Mit Zitat antworten
Alt 15.04.2008, 23:16  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard

Wer suchet, der findet: :wink:

http://dev.mysql.com/doc/refman/5.0/...with-null.html
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL Subquery Abfrage Kevz Datenbanken 6 09.05.2008 09:30
ORDER BY im Subquery cycap Datenbanken 12 31.10.2007 20:31
UPDATE mit Subquery cycap Datenbanken 6 27.09.2007 14:25
Subquery als komplettes Ergbnis ausgeben? stefanjann Datenbanken 7 03.05.2006 15:26
UNION in einem Subquery Datenbanken 0 26.10.2005 13:24
Subquery gibt NULL, wenn mehr als eine Zeile in Tabelle tapferesschneiderlein Datenbanken 8 31.07.2005 22:36
subquery Problem Datenbanken 8 18.03.2005 16:49
Subquery kurios..wie gehts richtig? PHP Tipps 2005 4 04.01.2005 20:24
[Erledigt] Select Statement mit exists subquery Datenbanken 5 09.12.2004 10:24
Subquery nötig? Stümper Datenbanken 7 31.08.2004 11:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql subquery, subquery, subquery mysql gleiche ids, sub query schreiben mysql

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:33 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.