SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 22.03.2007, 20:09:10
Nico #949494 Nico #949494 ist offline
Anfänger
 
Registriert seit: Mar 2007
Beiträge: 2
Zwei Aggregatfunktionen in JOIN über drei Tabellen

Guten Abend,

mein Problem ist folgendes: Ich habe drei Tabellen, die ich mittels JOIN verbinde. Die erste Tabelle enthält Datensätze, die zweite Kommentare dazu und die dritte Noten/Bewertungen zu den Datensätzen.

Mein erster Befehl lautete:

Code:
SELECT ideas.IID, AVG(SCORE) AS PUNKTE, ideas.COMPANY, COUNT(comments.CID)

FROM ideas LEFT JOIN comments on comments.IID = ideas.IID LEFT JOIN ratings ON ideas.IID = ratings.IID

GROUP BY comments.CID
und ich erhielt
Code:
#-----#------------#---------#------------#
| IID | AVG(SCORE) | COMPANY | COUNT(CID) |
#-----#------------#---------#------------#
| 1   | 1.0000     | a       | 2          |
| 2   | 4.5000     | b       | 2          |
| 3   | 0.0000     | c       | 2          |
| ... | ...        | ...     | ...        |
| 9   | 9.0000     | e       | 4          |
| 11  | NULL       | d       | 0          |
#-----#------------#---------#------------#
Das schien richtig, ist es aber nicht. In Wirklichkeit hat "b" nämlich nur einen Kommentar, nicht zwei - mein Beispiel ist gekürzt, es trat noch in anderen Zeilen auf.

Dann habe ich was anderes versucht, einen Schritt zurück:

Code:
SELECT ideas.IID, COMPANY, COUNT(CID)

FROM comments LEFT JOIN ratings ON comments.IID = ratings.IID LEFT JOIN ideas ON ideas.IID = comments.IID

GROUP BY comments.CID
und erhielt
Code:
#-----#---------#------------#
| IID | COMPANY	| COUNT(CID) |
#-----#---------#------------#
| 1   |	a	| 1	     |
| 1   |	a	| 1          |
| 2   |	b	| 2          |
| ... | ...     | ...        |
| 9   |	e	| 1	     |
| 9   |	e	| 1	     |
| 9   |	e	| 1	     |
| 9   |	e	| 1	     |
#-----#---------#------------#
Schon besser, denn hier kann man sehen, dass "b" tatsächlich nur einen Kommentar zugeordnet bekommen hat. Nur: Die Zahl in der Spalte COUNT(CID) entspricht nicht der Wahrheit, vielmehr sollte jede IID nur einmal vorkommen und die Anzahl der gleichen IIDs gleich der Spalte COUNT(CID) sein, dann würde es stimmen.

Wie bekomme ich das jetzt nur hin (und die AVG(SCORE)-Spalte danach wieder)?

Bin ich total auf dem Holzweg? Reichen euch diese Informationen?

Vielen Dank für eure Hilfe!
Mit Zitat antworten
  #2  
Alt 29.03.2007, 15:47:58
Nico #949494 Nico #949494 ist offline
Anfänger
 
Registriert seit: Mar 2007
Beiträge: 2
AW: Zwei Aggregatfunktionen in JOIN über drei Tabellen

Habe die Lösung selber gefunden:

Code:
SELECT ideas.IID, AVG(SCORE) AS PUNKTE, ideas.COMPANY, COUNT(distinct comments.CID)

FROM ideas LEFT JOIN comments on comments.IID = ideas.IID LEFT JOIN ratings ON ideas.IID = ratings.IID

GROUP BY comments.CID
Mit dem DISTINCT stimmts.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Join mit 2 Tabellen Baguvix MySQLi/PDO/(MySQL) 4 26.12.2006 14:04:01
4 Tabellen verknüpfen - INNER, OUTER und LEFT Join Franzx MySQLi/PDO/(MySQL) 0 13.11.2006 11:10:51
Query über 3 Tabellen mit JOIN madmat MySQLi/PDO/(MySQL) 2 26.09.2006 13:24:20
Zwei Tabellen und JOIN langwebdesign MySQLi/PDO/(MySQL) 7 21.03.2006 16:55:20
Optimierung bei INNER JOIN mit großen Tabellen henning666 MySQLi/PDO/(MySQL) 8 27.07.2005 14:42:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:11:19 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt