php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 05-11-2008, 18:58
DerEsWissenWill
 Registrierter Benutzer
Links : Onlinestatus : DerEsWissenWill ist offline
Registriert seit: Feb 2003
Beiträge: 61
DerEsWissenWill ist zur Zeit noch ein unbeschriebenes Blatt
Standard Unknown column 'number' in 'where clause'

Moin an alle,

ich habe das folgende Problem:


PHP-Code:
SELECT DISTINCT tabelle1.ID1,
tabelle1.TEXT1,
tabelle2.TEXT2,
COUNT(tabelle3.ID3) AS number
FROM tabelle1
LEFT JOIN tabelle2
ON tabelle1
.ID1=tabelle2.ID2
LEFT JOIN tabelle3
ON tabelle1
.ID1=tabelle3.ID3
WHERE tabelle2
.ID2>=0
AND number=0
GROUP BY tabelle1
.ID1
ORDER BY tabelle1
.TEXT1 ASC 

Wenn ich das "AND number=0" weglasse, wird mir die Spalte ausgegeben und ich kann darauf zugreifen. Das "AND number=0" als WHERE gibt aber die Fehlermeldung, dass es die Spalte nicht gibt. Warum? Wie kann ich das lösen?

Danke für Hilfe!!!
Martin
Mit Zitat antworten
  #2 (permalink)  
Alt 05-11-2008, 19:01
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

versuchs mal mit
PHP-Code:
SELECT DISTINCT tabelle1.ID1,
tabelle1.TEXT1,
tabelle2.TEXT2,
COUNT(tabelle3.ID3) AS number
FROM tabelle1
LEFT JOIN tabelle2
ON tabelle1
.ID1=tabelle2.ID2
LEFT JOIN tabelle3
ON tabelle1
.ID1=tabelle3.ID3
WHERE tabelle2
.ID2>=0
AND COUNT(tabelle3.ID3) = 0
GROUP BY tabelle1
.ID1
ORDER BY tabelle1
.TEXT1 ASC 
das Problem hatte ich auch schonmal, hab es damit aber lösen können
Mit Zitat antworten
  #3 (permalink)  
Alt 05-11-2008, 19:06
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Die COUNT() Funktion wird erst nach WHERE ausgeführt, du kannst also nicht einen Wert verwenden, der noch gar nicht existiert.

Du brauchst HAVING.
Mit Zitat antworten
  #4 (permalink)  
Alt 05-11-2008, 19:06
DerEsWissenWill
 Registrierter Benutzer
Links : Onlinestatus : DerEsWissenWill ist offline
Registriert seit: Feb 2003
Beiträge: 61
DerEsWissenWill ist zur Zeit noch ein unbeschriebenes Blatt
Standard Da geht er!

Ich werd wahnsinnig! Das hatte ich schon getestet, ging nicht. Jetzt geht es... Danke Dir.
Mit Zitat antworten
  #5 (permalink)  
Alt 05-11-2008, 19:09
DerEsWissenWill
 Registrierter Benutzer
Links : Onlinestatus : DerEsWissenWill ist offline
Registriert seit: Feb 2003
Beiträge: 61
DerEsWissenWill ist zur Zeit noch ein unbeschriebenes Blatt
Standard Doch nicht

Ne quatsch, stop! Das hatte ich nicht gemacht und das liefert auch nicht das Ergebnis. Die Summe der Spalte muss ja 0 sein. ich hatte an der Stelle direkt "COUNT(tabelle3.ID3)=0" getestet. Das gibt aber einen GROUP BY Fehler.
Mit Zitat antworten
  #6 (permalink)  
Alt 05-11-2008, 19:14
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Wie lautet die genaue Fehlermeldung?
Mit Zitat antworten
  #7 (permalink)  
Alt 05-11-2008, 19:14
DerEsWissenWill
 Registrierter Benutzer
Links : Onlinestatus : DerEsWissenWill ist offline
Registriert seit: Feb 2003
Beiträge: 61
DerEsWissenWill ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry, ich stehe auf dem Schlauch. Mein Problem ist da noch, dass das DISTINCT (also GROUP BY) ja über tabelle1.ID1 läuft. Das HAVING aber dann doch auf tabelle3... Geht das trotzdem? Mein "Schnelltest" ist fehlgeschlagen ;-(

Hätte mir das so vorgestellt:

PHP-Code:
SELECT DISTINCT tabelle1.ID1,
tabelle1.TEXT1,
tabelle2.TEXT2,
COUNT(tabelle3.ID3) AS number
FROM tabelle1
LEFT JOIN tabelle2
ON tabelle1
.ID1=tabelle2.ID2
LEFT JOIN tabelle3
ON tabelle1
.ID1=tabelle3.ID3
WHERE tabelle2
.ID2>=0
AND COUNT(tabelle3.ID3) = 0
GROUP BY tabelle1
.ID1
HAVING number 
0
ORDER BY tabelle1
.TEXT1 ASC 
Mit Zitat antworten
  #8 (permalink)  
Alt 05-11-2008, 19:20
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Das COUNT() funktioniert (wie oben geschrieben) in WHERE nicht!!

Probier:
Code:
SELECT
    t1.ID1, t1.TEXT1, t2.TEXT2, COUNT(t3.ID3) AS number
FROM
    tabelle1 t1
LEFT JOIN
    tabelle2 t2 ON ( t1.ID1 = t2.ID2 )
LEFT JOIN
    tabelle3 t3 ON ( t1.ID1 = t3.ID3 )
WHERE
    t2.ID2 >= 0
GROUP BY
    t1.ID1, t1.TEXT1, t2.TEXT2
HAVING
    number > 0
ORDER BY
    t1.TEXT1 ASC
Was ich übrigens sehe, was bringt die Abfrage t2.ID2 >= 0? Eine ID darf eigentlich gar nicht 0 sein können.
Mit Zitat antworten
  #9 (permalink)  
Alt 05-11-2008, 19:22
DerEsWissenWill
 Registrierter Benutzer
Links : Onlinestatus : DerEsWissenWill ist offline
Registriert seit: Feb 2003
Beiträge: 61
DerEsWissenWill ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Aah geil, wenn ich das HAVING mit dem COUNT nehme, dann geht es. Danke!

Das >= steht da drin, weil in dem JOIN ein Hersteller gezogen wird. Und wenn der User "alle" gewählt hat, dann darf die ID da > 0 sein.

Danke noch mal...
Mit Zitat antworten
  #10 (permalink)  
Alt 05-11-2008, 19:24
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von DerEsWissenWill
Das >= steht da drin, weil in dem JOIN ein Hersteller gezogen wird. Und wenn der User "alle" gewählt hat, dann darf die ID da > 0 sein.
Warum dann >= wenns > sein soll?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:16 Uhr.