Anzeige - [Interessiert an einer Anzeige?]
(?) Tags raten (?) anzahl, datensätze, tabellen (edit)
 
Reply to this topicStart new topicStart Poll
> Anzahl Datensätze aus 2 Tabellen

Geschrieben am: Sa 4.02.2006, 21:57
Report PostQuote Post

AyomRank 1
**

Gruppe: Member (inaktiv)
Beiträge: 0
Mitglied seit: --


Hallo,

Diese Abfrage erzielt nicht das gewünschte Ergebnis:

"SELECT COUNT( t.text),COUNT( k.text) FROM texte t, kommentare k where id=1 group by t.text"

$rs[0] und $rs[1] sind beide gleich dem Produkt der Anzahl gefundener Datensätze aus beiden Tabellen.

"SELECT COUNT(distinct t.text),COUNT(distinct k.text) FROM texte t, kommentare k where id=1 group by t.text"

liefert nur ob ein Datensatz in einer Tabelle vorkommt. (0 oder 1 oder gar nichts)

Das erwünschte Ergebnis wäre aber die Anzahl Datensätze in texte und
die Anzahl Datensätze in kommentare.

Weiss jemand, wie ich ohne Unterabfrage dieses Resultat erreiche?

Gruss

Tümmel






Top
PMEmail Poster
Top
 
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#2 Geschrieben am: So 5.02.2006, 00:13 (+02:16)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 2302
Mitglied seit: 4.02.2006


Solange beide Tabellen gemeinsam im From-Abschnitt stehen, werden sie auch gemeinsam ausgewertet.

Also trennen:

CODE
Select 1 As id, Count(*) As Anzahl From Tabelle1

Union

Select 2, Count(*) As Anzahl From Tabelle2

Order By id



und die zwei Zeilen dann nach dem Wert der ersten Spalte unterscheiden oder die durch OrderBy festgelegte Reihenfolge nutzen.



--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - die Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 

#3 Geschrieben am: So 5.02.2006, 02:00 (+01:47)
Report PostQuote Post

AyomRank 1
**

Gruppe: Member (inaktiv)
Beiträge: 0
Mitglied seit: --


Danke,

Genauso hab ich's jetzt auch bewerkstelligt und mich durch die anschliessende Sortierung gequält.
(6 Zeilen Code in 3 Stunden.)
Es sind noch ein paar mehr Parameter in den Abfragen.

Dabei kann man ja echt zum mysql-Hasser werden. mad.gif


Gruss

Tümmel
Top
PMEmail Poster
Top
 
QBFinest
braindust media
#4 Geschrieben am: Mi 8.02.2006, 20:07 (+3d 18:06)
Report PostQuote Post

AyomRank 2
****

Gruppe: Member (aktiv)
Beiträge: 12
Mitglied seit: 8.02.2006


Ich gehe mal von PHP aus, da hättest du anstatt COUNT() in MySQL auch einfach die Funktion mysql_num_rows benutzen können.


--------------------
Hey! It compiles! Ship it!
Top
PMEmail PosterUsers Website
Top
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#5 Geschrieben am: Mi 8.02.2006, 23:46 (+03:39)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 2302
Mitglied seit: 4.02.2006


QBFinest schrieb:

QUOTE
Ich gehe mal von PHP aus, da hättest du anstatt COUNT() in MySQL auch einfach die Funktion mysql_num_rows benutzen können.


@QBFinest, das ist ein Vorschlag, der gehört zur Rubrik

'Die zehn größten Fehler beim Zugriff auf Datenbanken'

Eine Datenbank ermittelt die Zahl der Datensätze über den Index und liefert eine Zeile zurück. Stattdessen alle Datensätze exportieren und sie clientseitig (vom Webdienst) zählen lassen ist gruselig.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - die Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 
QBFinest
braindust media
#6 Geschrieben am: Do 9.02.2006, 00:06 (+00:19)
Report PostQuote Post

AyomRank 2
****

Gruppe: Member (aktiv)
Beiträge: 12
Mitglied seit: 8.02.2006


Da würde ich mal ganz klar mit JEIN antworten. Wenn man die Datensätze hinterher noch benötigt ist es durchaus sinnvoll wegen des einfacheren Handlings die Funktion mysql_num_rows zu verwenden. Dieser Thread ist ja der eindeutige Beweis dafür, dass gerade Datenbank Anfänger mit COUNT() Probleme haben. Wer nur die Anzahl der Datensätze wissen will sollte jedoch schon zu COUNT() greifen.


--------------------
Hey! It compiles! Ship it!
Top
PMEmail PosterUsers Website
Top
 

#7 Geschrieben am: Do 9.02.2006, 00:40 (+00:34)
Report PostQuote Post

AyomRank 1
**

Gruppe: Member (inaktiv)
Beiträge: 0
Mitglied seit: --


QUOTE (QBFinest @ Do 9.2.2006, 0:06)
Da würde ich mal ganz klar mit JEIN antworten. Wenn man die Datensätze hinterher noch benötigt ist es durchaus sinnvoll wegen des einfacheren Handlings die Funktion mysql_num_rows zu verwenden. Dieser Thread ist ja der eindeutige Beweis dafür, dass gerade Datenbank Anfänger mit COUNT() Probleme haben. Wer nur die Anzahl der Datensätze wissen will sollte jedoch schon zu COUNT() greifen.

Hallo QFinest,

Die Idee mysql_num_rows zu benutzen ist in dem Fall wirklich nur subobtimal.
Daan müsste zwei myqsl_queries erstellen und falls man hinterher noch Daten benötigt, wie
z.B. in
"select count( t.text),t.text,t.time,1 from `text1` t where' group by t.text,h.time union select count(k.text),k.k.text,k.time,2 from `text2` k ) group by h.text,h.time

wäre das handling mit 2 Datensätzen und mysql_num_rows nicht nicht bedeutend langsamer, sondern auch noch schwieriger, da der 2. Datensatzcursor jedesmal mit mysq_data_seek bewegt werden müsste.

Ich bin von sql gewohnt, Funktionen auch in die where und group by Clause setzen zu können.
Da hat mysql wirklich noch erheblich Verbesserungsbedarf.

Gruss

Tümmel
Top
PMEmail Poster
Top
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#8 Geschrieben am: Do 9.02.2006, 00:56 (+00:15)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 2302
Mitglied seit: 4.02.2006


Einfach ein leistungsfähigeres Backend verwenden. Dann geht:

CODE
Select
(Select Count(*) From Tabelle1 Where ...) +
(Select Count(*) From Tabelle2 Where ...)

As Ergebnis


Sprich: Zwei zählende Unterabfragen direkt als Ausdruck zusammenaddieren, das liefert die eine Zelle mit dem gewünschten Wert zurück.

PS: Oben war nirgends die Rede davon, daß Einzelzeilen benötigt werden.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - die Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/10481

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Datensätze / Projekt zu verkaufen omc 222 3 Di 2.09.2008, 16:12
30.500 DOI Datensätze Azrael 168 2 Sa 2.08.2008, 12:30
MySQL Abfrage von zwei Tabellen webdoktor 220 6 Do 31.07.2008, 15:26
52.000 DOI Datensätze yoopi 278 0 Sa 5.07.2008, 20:41
33.000 DOI Datensätze yoopi 137 0 Sa 3.05.2008, 11:17
(S) Datensätze & Anschriften R3dix 317 7 Mi 23.04.2008, 19:14
Verkaufe Datensätze aus Gewinnspiele yoopi 298 1 Di 22.04.2008, 19:38
MySQL Ausgabe zwei Tabellen Brian Folte 245 5 Do 17.04.2008, 12:16
PHP Tabellen <tr> einfügen Brian Folte 266 5 Di 15.04.2008, 15:17
Anzahl Posts auf Startseite eines Blogs hansolo999 157 0 Di 4.03.2008, 11:55




Anzeige - [Interessiert an einer Anzeige?]



Anzeigen


[Interessiert an einer Anzeige?]