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 Thema bewerten
  #1 (permalink)  
Alt 17-09-2008, 20:11
nifredi
 Newbie
Links : Onlinestatus : nifredi ist offline
Registriert seit: Jan 2006
Beiträge: 5
nifredi ist zur Zeit noch ein unbeschriebenes Blatt
Standard Zweimal COUNT() in einer Abfrage

Klingt kompliziert, ist es vielleicht auch. Ich hatte bisher jedenfalls so meine Probleme.

Folgendes: In einer Tabelle sind die Autoren gespeichert, zwei weitere enthalte Termine, die dritte Artikel. Nun möchte ich die Autoren ausgeben und dazu die Anzahl der von ihnen erstellten Artikel zum einen und der Termine zum anderen anzeigen. Das untenstehende Kommando funktioniert zwar, doch sind die Ergebnisse der beiden COUNT()s seltsam - sie ergeben beide den gleichen Wert, der, wie mir scheint, das Produkt der einzelnen Anzahlen ist. 6 Termine mal 20 Artikel gleich 120. 120 gibt mir COUNT() in beiden Fällen aus.

Code:
SELECT nickname,COUNT(artikel_id),COUNT(termin_id) 
FROM artikel,termine,authors 
WHERE author_id=2 
AND author_id=artikel.author 
AND author_id=termine.author 
GROUP BY author_id
Ist soetwas mit einer einzelnen Abfrage überhaupt realisierbar? Oder was mache ich noch falsch? Ich hoffe alle benötigten Angaben sind vorhanden und der Rest erklärt sich von selbst.

Vielen Dank im Vorraus!
NiFreDi

Geändert von nifredi (18-09-2008 um 16:33 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 17-09-2008, 20:38
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

brich mal deinen code um!

und was genau willst du nun ausgeben?

autor1 termin1 count:10
autor1 termin2 count:11
autor2 termin1 count:2
etc...
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #3 (permalink)  
Alt 18-09-2008, 00:14
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

code umbrechen!

Code:
COUNT(artikel_id) AS artikel_cnt,COUNT(termin_id) AS termin_cnt
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #4 (permalink)  
Alt 18-09-2008, 16:43
nifredi
 Newbie
Links : Onlinestatus : nifredi ist offline
Registriert seit: Jan 2006
Beiträge: 5
nifredi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So, also noch einmal etwas ausführlicher: Ich habe drei Tabellen: eine enthält die Autoren, alle mit einer eindeutigen ID versehen, eine für Artikel, dort ist nun wieder die ID des Autors, der den Artikel erstellt hat gespeichert, ebenso in der dritten Tabelle, die die Termine enthält.
Nun möchte ich die Autoren in einer Liste ausgeben, mit der zusätzlichen Angabe, wie viele Artikel und wie viele Termine er erstellt hat.

Autorenname, Anzahl durch ihn erstellte Artikel, Anzahl Termine

Zur Zeit ermittle ich die Anzahlen durch weitere Abfragen innerhalb der Schleife zum Ausgeben der Datensätze, bei rund 250 Datensätzen ist dies jedoch sehr langsam.

Die obige Abfrage gibt jedoch, wie dort beschrieben, falsche Werte aus.
Mit Zitat antworten
  #5 (permalink)  
Alt 18-09-2008, 17:06
Payne_of_Death
 Master
Links : Onlinestatus : Payne_of_Death ist offline
Registriert seit: Dec 2002
Ort: Folterkeller Nr. 18
Beiträge: 2.953
Payne_of_Death ist zur Zeit noch ein unbeschriebenes Blatt
Payne_of_Death eine Nachricht über ICQ schicken Payne_of_Death eine Nachricht über AIM schicken Payne_of_Death eine Nachricht über Yahoo! schicken
Standard

Was hast du denn versucht?

Du wirst u.A. um ein Group By nicht herumkommen...

Wenn du in der ersten Table n Autoren hast musst du diese Autoren ID wiederrum mit den Artikel mit inner join verknüpfen....
dort musst dann wiederrum die ID des Autors gruppieren
und erst dann kann die count sagen wieviel Artikel der Autor auch hat...

Und die Termine musst dann halt auch noch mit reinnehmen....
__________________
MfG Payne_of_Death

Manual(s): <-| PHP | MySQL | SELFHTML |->
Merke:
Du brauchst das Rad nicht neu erfinden ! <-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

Murphy`s Importanst LAWS
Jede Lösung bringt nur neue Probleme
Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
In jedem kleinen Problem steckt ein großes, das gern raus moechte.
Mit Zitat antworten
  #6 (permalink)  
Alt 18-09-2008, 17:12
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von nifredi

Die obige Abfrage gibt jedoch, wie dort beschrieben, falsche Werte aus.
Weil der blöde MySQL alles zu lässt ... Aggregate Functions funtioniert nur richtig, wenn alle selektierte Spalten auch gruppiert werden, d.h. alles was kein Argument von Aggregatfunktion ist, muss in GROUP BY rein, dann klappt auch mit dem Ergebnis.
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

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
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
 Alle PHP Scripte anzeigen

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