Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Pozycja rekordu w zwracanych wynikach
jajcarzd1
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 19
Dołączył: 24.12.2003
Skąd: Przemyśl

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


Witam

Mam pytanie czy istnieje jakiś operator, funkcja w mysql-u dzięki której mógłbym uzyskać informację na jakiej pozycji znajdzie się pewien rekord w zwróconych wynikach, przy założeniu oczywiście konkretnego ordera. Oczywiście mogę pobrac wszystkei dane i przelecieć sobie po tablicy wnikowej w php, ale interesuje mnie to czy mozna te dane pobrać już wcześniej w samym zapytaniu. Np. pobieram wszystkie dane w porządku rosnącym i na którym miejscu jest rekord o id 50.

Dzięki pozdro.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
TheaSiX
post
Post #2





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

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


możesz to zrobić przy użyciu while oraz iteracji (tak myślę):

  1. <?php
  2. $i = 0;
  3. $result = mysql_query("SELECT * FROM tabela ORDER BY kolumna");
  4. while($row = mysql_fetch_array($result))
  5. {
  6.    $id = $row["id/number/numer/etc."];
  7.    if($id == 50)
  8.    {
  9.        $pos = $i;
  10.    }
  11.    $i++;
  12. }
  13. ?>


Sprawdziłem u siebie i działa. Wystarczy, że przystosujesz na swoje potrzeby..

Ten post edytował TheaSiX 25.05.2009, 17:40:39
Go to the top of the page
+Quote Post
jajcarzd1
post
Post #3





Grupa: Zarejestrowani
Postów: 215
Pomógł: 19
Dołączył: 24.12.2003
Skąd: Przemyśl

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


Cytat(TheaSiX @ 25.05.2009, 18:39:18 ) *
możesz to zrobić przy użyciu while oraz iteracji (tak myślę):

  1. <?php
  2. $i = 0;
  3. $result = mysql_query("SELECT * FROM tabela ORDER BY kolumna");
  4. while($row = mysql_fetch_array($result))
  5. {
  6.    $id = $row["id/number/numer/etc."];
  7.    if($id == 50)
  8.    {
  9.        $pos = $i;
  10.    }
  11.    $i++;
  12. }
  13. ?>


Sprawdziłem u siebie i działa. Wystarczy, że przystosujesz na swoje potrzeby..


Wiem że działa bo to żaden problem przelecieć po pętli i znaleźć swój rekord, ale jak zaznaczyłem na samym początku interesuje mnie rozwiązanie uzyskania takiego info przez samo zapytanie. Skorzystałem z linku podanego przez kolegę wookieb-a i tam znalazłem, rozwiązanie, które wkleję dla potomnych poniżej

  1. SET @id=5,@nr = 0, @idnr = 0;
  2. SELECT @idnr AS nr FROM
  3. (SELECT @nr:=@nr+1,IF(ID=@id, @idnr := @nr,@idnr=@idnr),ID FROM tabela WHERE jakiespole ='jakiswarunek' ORDER BY jakiespole jakiessortoanieASClubDESC) podsel WHERE podsel.ID = @id;


Dzięki i pozdro.

Cytat(jajcarzd1 @ 26.05.2009, 08:40:23 ) *
Wiem że działa bo to żaden problem przelecieć po pętli i znaleźć swój rekord, ale jak zaznaczyłem na samym początku interesuje mnie rozwiązanie uzyskania takiego info przez samo zapytanie. Skorzystałem z linku podanego przez kolegę wookieb-a i tam znalazłem, rozwiązanie, które wkleję dla potomnych poniżej

  1. SET @id=5,@nr = 0, @idnr = 0;
  2. SELECT @idnr AS nr FROM
  3. (SELECT @nr:=@nr+1,IF(ID=@id, @idnr := @nr,@idnr=@idnr),ID FROM tabela WHERE jakiespole ='jakiswarunek' ORDER BY jakiespole jakiessortoanieASClubDESC) podsel WHERE podsel.ID = @id;


Dzięki i pozdro.



Pojawił mi się jednak pewien problem z tym rozwiazaniem nospora. Jeżeli wyciągam dane z jednej tabeli uzyskuję oczekwiany wynik jeżeli natomiast zastosuję jakiegoś inner joina z drugą tabelą to już otrzymuję zero. Co ciekawe wystepuje to gdy mam klauzulę order by jeżeli natoamist ordera wywalę to wynik mam zwracany poprawnie. No ale bez ordera to mi akurat nie pasuje. Miałby ktoś pomysł w czym moze być problem ?

Ten post edytował jajcarzd1 26.05.2009, 07:41:39
Go to the top of the page
+Quote Post

Posty w temacie
- jajcarzd1   [MYSQL] Pozycja rekordu w zwracanych wynikach   25.05.2009, 13:33:17
- - pgrzelka   hmm... rekord o id = 50 jest na pozycji 50 ? czy j...   25.05.2009, 14:00:23
|- - jajcarzd1   Cytat(pgrzelka @ 25.05.2009, 15:00:23...   25.05.2009, 14:12:27
- - Spawnm   array_search" title="Zobacz w manualu PHP" target=...   25.05.2009, 14:27:43
- - wookieb   Cytat(Spawnm @ 25.05.2009, 15:27:43 )...   25.05.2009, 14:32:28
- - TheaSiX   możesz to zrobić przy użyciu while ...   25.05.2009, 17:39:18
|- - jajcarzd1   Cytat(TheaSiX @ 25.05.2009, 18:39:18 ...   28.05.2009, 08:39:31
- - nospor   to pokaz to nowe zapytanie co masz   28.05.2009, 08:43:45
- - jajcarzd1   [SQL] pobierz, plaintext SET @id=22,@nr=0,@idnr=0;...   28.05.2009, 08:53:12
- - nospor   a czy nie masz przypadkiem bledu zapytania? Sprawd...   28.05.2009, 09:06:21
|- - jajcarzd1   Cytat(nospor @ 28.05.2009, 10:06:21 )...   28.05.2009, 09:12:37
- - nospor   sorki ze sie czepiam, ale jak sprawdzales czy nie ...   28.05.2009, 09:14:51
|- - jajcarzd1   Cytat(nospor @ 28.05.2009, 10:14:51 )...   28.05.2009, 09:25:26
- - nospor   mozesz zapodac screena z wynikow tego zapytania, o...   28.05.2009, 09:45:17
- - jajcarzd1   Pierwsze [SQL] pobierz, plaintext SET @id=22,@nr=...   28.05.2009, 09:59:23
- - nospor   Kurcze, to jest nie logiczne.... albo mam zacme i ...   28.05.2009, 10:11:04
|- - jajcarzd1   Cytat(nospor @ 28.05.2009, 11:11:04 )...   28.05.2009, 10:41:52
- - nospor   no i juz wiem gdzie jest blad. chodzi o @nr, do kt...   28.05.2009, 10:55:28
- - jajcarzd1   Cytat(nospor @ 28.05.2009, 11:55:28 )...   28.05.2009, 11:00:33


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 Aktualny czas: 28.12.2025 - 02:30