Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] Index/numer rekordu
SpamerZOtwocka
post 27.12.2009, 18:42:27
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 27.12.2009

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


Czy istnieje jakiś sposób na sprawdzenie indexu/numeru rekordu? Tzn. którym jest z kolei który spełnia wymogi zapytania?

Mam tabelę, a w niej miedzy innymi numer_osoby.

I teraz potrzebuję pozycję/numer/index rekordu gdzie osoba ma numer XXX. Niestety nie moge po prostu napisać select numer _osoby from tabela, bo potrzebuje tej pozycji po odfiltrowaniu pewnych danych.

Konkretnie chodzi o znalezenie pozycji tego rekordu (czy jest pierwszy, drugi czy dziesiąty) wśród danych zwróconych przez to zapytanie.
Go to the top of the page
+Quote Post
Robert007
post 27.12.2009, 18:50:36
Post #2





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

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


zapytanie MYSQL?

  1. SELECT * FROM tabela WHERE id = numer


Ten post edytował Robert007 27.12.2009, 18:51:02
Go to the top of the page
+Quote Post
SpamerZOtwocka
post 27.12.2009, 19:06:12
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 27.12.2009

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


Nie rozumiesz.

Przyklad:
SELECT numer_osoby FROM tabela WHERE wiek<=1 AND costam=costam ORDER By 'miejsce zamieszkania'
i to zpytanie zwraca mi np. 50 wyników posegregowanych wedlug miejsca zamieszkania.
Czyli mam takie wyniki:
(...)
1234455
1234
653
56785
66
44565
654
(...)
I teraz chce POZYCJĘ rekordu gdzie numer równa się 66.
Czyli w tym wypadku:
(...)
1234455 <- 1 pozycja
1234
653
56785
66 <-piąta pozycja ( tego szukam)
44565
654
(...)
Go to the top of the page
+Quote Post
Darti
post 27.12.2009, 19:10:53
Post #4





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


  1. $count=0;
  2. while($row = mysql_fetch_array($wynik)){
  3. $count++;
  4. if($row['numer_osoby']==66) echo "znalazłem na $count pozycji";
  5. }


Ten post edytował Darti 27.12.2009, 19:11:08


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
darko
post 27.12.2009, 19:14:26
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Zakładam, że wyciągnięte dane trzymasz w tablicy, np. o nazwie $dane, więc
  1. $pozycja = array_search('66', $dane);
lub
  1. $pozycja = array_search('66', $dane['numer']);
w zależności od tego, jak dokładnie zbudowana jest tabela, a co za tym idzie jak wygląda tablica z wyciągniętymi danymi.

Ten post edytował darko 27.12.2009, 19:16:29


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
SpamerZOtwocka
post 27.12.2009, 19:22:42
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 27.12.2009

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


Właśnie chodzi o to żeby nie pobierac tych wszystkich danych jakie generuje to zapytanie a jednynie pozycje tego jednego rekordu. W niektórych przypadkach zapytanier to generuje kilka tysięcy danych, a mi chodzi tylko o pozycję jednego z nich. Myślałem raczej o jakiejs f-cji w mysql a nie kodzie php
Go to the top of the page
+Quote Post
darko
post 27.12.2009, 19:26:14
Post #7





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


To:
Cytat(SpamerZOtwocka @ 27.12.2009, 19:22:42 ) *
Właśnie chodzi o to żeby nie pobierac tych wszystkich danych jakie generuje to zapytanie a jednynie pozycje tego jednego rekordu. W niektórych przypadkach zapytanier to generuje kilka tysięcy danych, a mi chodzi tylko o pozycję jednego z nich. Myślałem raczej o jakiejs f-cji w mysql a nie kodzie php

przeczy temu:

Cytat
Niestety nie moge po prostu napisać select numer _osoby from tabela, bo potrzebuje tej pozycji po odfiltrowaniu pewnych danych.

Albo ja czegoś nie rozumiem, albo przeczysz sam sobie. Może spróbuj jeszcze raz dokładnie wytłumaczyć o co Ci chodzi.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
SpamerZOtwocka
post 27.12.2009, 19:32:11
Post #8





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 27.12.2009

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


Listing:
SELECT numer_osoby FROM tabela WHERE wiek<=1 AND costam=costam ORDER By 'miejsce zamieszkania'
i to zpytanie zwraca mi np. 50 wyników posegregowanych wedlug miejsca zamieszkania.
Czyli mam takie wyniki:
(...)
1234455
1234
653
56785
66
44565
654
(...)
I teraz chce POZYCJĘ rekordu gdzie numer równa się 66.
Czyli w tym wypadku:
(...)
1234455 <- 1 pozycja
1234
653
56785
66 <-piąta pozycja (TO JEST jedyna rzecz na której mi zależy w całej operacji)
44565
654
(...)

Rozwiazanie jakie proponujecie to ostatecznosc. Mam pobierać 4,5 tyś rekordów żeby określić położenie jedengo z nich? Myślałem o czymś bardziej ambitnym.

Inaczej mówiąc jak przekształcić 'listing' żeby był jak najbardziej wydajny. Najlepiej jakby było to jedno zapytanie mysql.
Go to the top of the page
+Quote Post
Darti
post 27.12.2009, 20:15:49
Post #9





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


hmm to skorzystaj z CREATE TEMPORARY TABLE i jako jedną z kolumn zrób indeks_temp z auto_increment a drugą wynik Twojego zapytania, następnie wydaj zapytanie SELECT indeks_temp FROM tabela_temp where numer_osoby = 66
Pamiętać należy, że to wymaga persistent connection (mysql_pconnect).

Ten post edytował Darti 27.12.2009, 20:16:15


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
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: 5.07.2025 - 08:27