Schrift
[thread]3665[/thread]

count(*) & limit



<< >> 9 Einträge, 1 Seite
Froschpopo
 2006-03-17 14:04
#34122 #34122
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich möchte, wenn möglich, mir zwei statements ersparen und alles in einem abwasch erledigen.

das statement sollte ungefähr so aussehen:
Code: (dl )
SELECT count(*), id FROM users WHERE sex = 'm' LIMIT 0,10

Ich möchte im count() gerne die anzahl aller Spalten 'sex' haben, deren Wert 'm' ist.
In Kombination mit Limit scheint das allerdings nicht zu funktionieren.
Ich könnte natürlich auch das Limit weglassen, dann wird selectrow_array() teilweise jedoch mit bis zu 40.000 Indexes belastet und das will ich umgehen.

Das ganze ist eine Liste, die ich gerne "Seitenweise" anzeigen will und da kommt mir LIMIT sehr entgegen.
Ich möchte aber auch die gesamtzahl aller ergebnisse anzeigen. Das habe ich bisher in einem eigenen statement gemacht. Find ich aber doof!\n\n

<!--EDIT|Froschpopo|1142597337-->
Thorium
 2006-03-17 17:49
#34123 #34123
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Count muss ja zwangsweise alle Datensätze durchgehen, also macht count in Verbindung mit limit keinen Sinn.
Ausserdem bin ich nicht sicher, ob du neben count(*) auch noch die id abfragen kannst...
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
renee
 2006-03-17 20:15
#34124 #34124
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Doch, sollte gehen, nur nicht mit dem gewünschten Ergebnis. Dann wird gezählt, wie oft die id mit sex=m vorkommt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Froschpopo
 2006-03-17 21:57
#34125 #34125
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
kann ich denn auch irgendwie zwei statements in ein DBI::prepare() packen? wie sieht dann z.b. das array-ergebnis aus?
nepos
 2006-03-18 12:36
#34126 #34126
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wie meinst du zwei Statements? Mit Prepare kannst du ein Statement vorbereiten und dann via Execute ausfuehren. Da geht also nur eines. Natuerlich kannst du ueber verschiedene Statement Handles auch mehrere SQL-Anweisungen vorbereiten.
Oder meinst du ein verschachteltes Statements, in dem du einen Subselect drin hast?
Froschpopo
 2006-03-18 18:26
#34127 #34127
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich möchte mir eigentlich schreibarbeit und in dem script ein paar Zeilen sparen!
Ich brauche einmal die Anzahl der Suchergebnisse gesamt und einmal die Suchergebnisse für die Seitenweise ausgabe, also die mit LIMIT.

Ich habe ein Forum mit sehr vielen Einträgen. Ich möchte aber auf jeder Seite nur 15 ausgeben. Oben soll angezeigt werden, wieviele Einträge ees insgesamt gibt.
Ich habe bisher immer eine eigene Abfrage dafür gemacht. Find ich aber doof!
nepos
 2006-03-18 19:11
#34128 #34128
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wieso?
Code (perl): (dl )
my $anzahl_zeilen = $dbh->selectrow_array(qq{SELECT count(*) FROM bla});

Is das viel zu tippen? ;)
pq
 2006-03-20 14:49
#34129 #34129
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html
die funktion FOUND_ROWS() liefert, was du willst.\n\n

<!--EDIT|pq|1142858989-->
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
 2006-03-20 19:03
#34130 #34130
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich habs immer gewusst... die Frauen haben absolut den Durchblick hier! Danke pq!
<< >> 9 Einträge, 1 Seite



View all threads created 2006-03-17 14:04.