Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobranie rekordy i liczby rekordów po nim
rangoo
post 2.08.2012, 19:51:10
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 5
Dołączył: 15.01.2010
Skąd: Skawina k. Krakowa

Ostrzeżenie: (0%)
-----


Witam,

Mam problem. Muszę pobrać w jednym zapytaniu wszystkie rekordy spełniające dany warunek i liczbę rekordów znajdujących się po nich. Nie mogę po indeksie, ponieważ rekordy mogą być usunięte po drodze = luka pomiędzy kolejnymi ID.

w SQL napisałbym to jakoś tak:
  1. SELECT `elements`.*, (SELECT count(*) FROM `elements` WHERE `elements`.`id` > `elements`.`id`) AS `after` FROM `elements` WHERE `user_id` = 10

niestety, jak widać, w podzapytaniu używam dwa razy `elements`.`id` - jednego z podzapytania a drugiego z zapytania głównego, więc nie działa ;/

mógłbym ewentualnie napisać to w PHP z dodatkowym zapytaniem dla każdego elementu:
  1. $elements = $pdo->query('SELECT * FROM `elements` WHERE `user_id` = 10')->fetchAll(PDO::FETCH_ASSOC);
  2.  
  3. $c = count($elements);
  4. for($i = 0; $i < $c; $i++) {
  5. $count = $pdo->query('SELECT count(*) FROM `elements` WHERE `id` > '.$elements[$i]['id'])->fetch(PDO::FETCH_NUM);
  6. $elements[$i]['count'] = $count[0];
  7. }


Jest możliwość zapisania tego w jednym zapytaniu?

@EDIT
Rozwiązane. Jeśli kogoś interesuje:

  1. SELECT `el1`.*, (SELECT count(*) FROM `elements` AS `el2` WHERE `el2`.`id` > `el1`.`id`) AS `after` FROM `elements` AS `el1` WHERE `user_id` = 10


Ten post edytował rangoo 2.08.2012, 19:57:34
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 12:58