2012-03-31 4 views
1

i bin neu in MYSQL und ich bin mit einigem Problem steckenwie in einzelner Abfrage zählen und Aufzeichnungen bekommen

Brief: Ich habe ein Bild Tabelle, die Bilder für die Benutzer 1

Table Name:picture 
Columns: picture_id primary key,auto increment 
     user_id INT foreign key 
     path VARCHAR(75) 

User_id besteht besteht aus 50 Bildern, i nach ersten 20 Bildpfade wollen picture_id und count alle Bilder von user_id 1, das heißt 20 Aufzeichnungen und count = 50 mit in einer einzigen Abfrage.Bitte helfen Sie mir Vielen Dank im Voraus.

+0

Warum nicht alle Datensätze und haben eine laufende Zählung in PHP, während Sie die Suchresultates verarbeiten? –

+0

Ich habe eine Antwort mit der Erwähnung von 'SQL_CALC_FOUND_ROWS' gepostet, aber es verwendet 2 Abfragen, sodass Ihre Frage nicht wirklich beantwortet wird. Werfen Sie einen Blick auf [diese Frage] (http://stackoverflow.com/questions/186588/which-is-fastest-select-sql-calc-found-rows-from-table-or-select-count) für weitere Informationen . – cmbuckley

Antwort

2

Es ist ein wenig kompliziert, aber Sie könnten es über eine Unterabfrage oder einen Join tun.

Eine Möglichkeit wäre:

select picture_id, 
    (select count(*) from pictures p1 where p1.user_id = pic.user_id) as num_pics 
    from picture pic 
    where pic.user_id = 1 
    order by picture_id 
    limit 20; 
+0

Danke Brian Hoover, es funktioniert –

+0

@RajneelJoshi Wenn Sie denken, dies ist die beste Antwort auf Ihr Problem, ich denke, es ist Ihre Pflicht, dies als die richtige Antwort zu markieren! ;-) –