Schrift
[thread]3782[/thread]

SELECT COUNT()



<< >> 9 Einträge, 1 Seite
Froschpopo
 2007-02-07 11:22
#35219 #35219
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich würde gerne sowat hier machen:

SELECT COUNT(sessions.id), kunden.name FROM sessions, kunden...

In Worten:
Ich habe eine Tabelle mit Kundennamen. Nun möchte ich testen, ob der User auch in der sessions-Tabelle vorhanden ist.
Weiss jemand von Euch, wie man das mit einem einzelnen Statement anstellen kann? Ich mache bisher immer in der Ausgabe-While aus dem ersten SELECT dann das COUNT() für jeden Kunden neu.
pq
 2007-02-07 11:40
#35220 #35220
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
mach ein [sql]kunden LEFT JOIN sessions GROUP by kunden.id[/sql]
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2007-02-07 11:52
#35221 #35221
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Also ich hab folgendes probiert aber versteh irgendwie noch nicht worauf du hinaus willst
Code: (dl )
SELECT defaultusers.name FROM defaultusers LEFT JOIN ON sessions GROUP BY defaultusers.id LIMIT 0,10

Warum GROUP ? defaultusers.id ist ein UNIQUE INDEX und einmalig.

Das ganze dient übrigens dazu, festzustellen,OB der abgefragte Kunde online ist.\n\n

<!--EDIT|Froschpopo|1170843720-->
nepos
 2007-02-07 13:17
#35222 #35222
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das GROUP BY weil du vorhin ein COUNT() drin hattest ;)
Froschpopo
 2007-02-07 13:23
#35223 #35223
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Das Ändert aber auch nichts daran, dass der LEFT-JOIN-Syntax falsch ist!

Nochmal:
Code: (dl )
SELECT defaultusers.name FROM defaultusers LEFT JOIN ON sessions GROUP BY defaultusers.id LIMIT 0,10


Also zum VErständnis:
Ich möchte defaultusers ausgeben und dann bei der Ausgabe anzeigen, ob derjenige auch in sessions einen Eintrag hat.
pq
 2007-02-07 13:33
#35224 #35224
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[sql]SELECT defaultusers.name, IF(sessions.uid IS NOT NULL, "Yes!", "No")
FROM defaultusers LEFT JOIN sessions ON defaultusers.id = sessions.uid LIMIT 0, 10[/sql]
wie war das noch mit den sql-grundlagen?\n\n

<!--EDIT|pq|1170848043-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2007-02-07 13:36
#35225 #35225
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Froschpopo,07.02.2007, 12:23]Das Ändert aber auch nichts daran, dass der LEFT-JOIN-Syntax falsch ist!

Nochmal:
Code: (dl )
SELECT defaultusers.name FROM defaultusers LEFT JOIN ON sessions GROUP BY defaultusers.id LIMIT 0,10
[/quote]
wenn *du* die syntax veränderst und dann hier rummeckerst, dass sie
falsch ist, kann ich dir auch nicht helfen. und wie man einen JOIN
schreibt, solltest du auch selber wissen oder es mal nachlesen, es
kann ja nicht sein, dass du bei jedem pipfax hier im forum nachfragst.
stell dir doch einen programmierer ein, der sich mit sowas auskennt.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2007-02-07 14:27
#35226 #35226
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Also erstmal muss ich mich entschuldigen wenn ich manchmal etwas schwer von Begriff bin. Aber eigentlich bin ich recht selten hier! WENN ich aber hier bin, bringe ich immer eine ganze Flut von Fragen mit die sich in der ZWischenzeit mir stellen. Vielleicht fällt es deshalb auch so enorm auf! Ich würde aber nicht sagen, dass ich deshalb im Jahr mehr Threads habe als jemand anderes. Nur WENN, dann halt in kurzer Zeit mehrere.
Tut mir leid.
Also nochmal zum Thema: Ich kannte JOIN's bisher immer etwas anders und versuche auch immer durch Überlegungen auf die Lösung zu kommen. Bei dem GROUP hat sich irgendetwas in mir dagegen gestreubt. Ich weiss auch nicht.

Mit deinem vorletzten Post funktioniert es aber dann soweit ganz gut.
Aber jetzt gibts ein Problem mit SQL_CALC_FOUND_ROWS und das sieht so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    my $select = "SELECT SQL_CALC_FOUND_ROWS
defaultusers.id,
defaultusers.birthday,
defaultusers.name,
defaultusers.count_img,
defaultusers.wohnort,
IF(sessions.userid IS NOT NULL, '1','0')
FROM defaultusers LEFT JOIN sessions ON
defaultusers.id = sessions.userid
WHERE
defaultusers.status = 'N'
ORDER BY
IF(defaultusers.count_img >=1, 1, defaultusers.count_img) DESC,
defaultusers.lastlogin DESC
LIMIT $db_show, 8";

Das Problem hierbei ist folgendes:
SQL_CALC_FOUND_ROWS zählt soweit wie gewünscht die Ergebnistabelle, ignoriert aber die WHERE-Klausel !\n\n

<!--EDIT|Froschpopo|1170851672-->
Froschpopo
 2007-02-07 14:54
#35227 #35227
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ah jetzt gehts! Hat sich erledigt :) War ein anderes Problemchen das nichgts mit meinem perfektem Statement zu tun hatte :) Danke nochmal!
<< >> 9 Einträge, 1 Seite



View all threads created 2007-02-07 11:22.