Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Skonstruowanie odpowiedniego zapytania
kodepiko6
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 18.12.2011

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


Witam serdecznie wszystkich użytkowników przeglądających mój temat, mam nadzieję że nie będzie ich wielu -
tym samym dostając szybko rozwiązanie mojego problemu, który zapewne jak dla Was jest banalny..

Cóż, dopiero się uczę, mam prawo mieć takie 'główkowania' ;-)
Przejdźmy do rzeczy:

Potrzebuję skonstruować zapytanie MySQL, które będzie pobierać WSZYSTKIE POLA z tabeli TEST, jeśli zawartość pola IMIE powtórzy się więcej niż TRZY RAZY W TYM SAMYM CZASIE (pole data) i by IP było unikatowe, i jeśli TYP = RAZ

Obrazując, chciałbym osiągnąć taki wynik:

Tabela TEST:

|.. DATA ..| IMIE | IP | TYP
04:07:10 | JAN | 1.2.3 | raz
04:07:10 | JAN | 1.2.3 | raz
04:07:10 | JAN | 1.2.3 | raz
04:07:10 | JAN | 1.2.3 | raz
04:07:10 | JAN | 1.2.3 | dwa
04:07:10 | JAN | 6.6.6 | raz
04:07:10 | JAN | 6.6.6 | raz
04:07:10 | JAN | 6.6.6 | raz
04:07:10 | JAN | 6.6.6 | raz
04:07:09 | JAN | 6.6.6 | raz
04:07:10 | OLA | 6.6.6 | raz

By wynik zapytania zwrócił:

04:07:10 | JAN | 1.2.3 | raz
04:07:10 | JAN | 6.6.6 | raz

Nie mogę ustawić w tabeli klucza primary np. na ip, bo wtedy nie będzie się robić więcej niż 1 wpis na IP, a nie takie mam zamierzenia :/

Serdecznie proszę o pomoc, kombinuję z zapytaniami już prawie 2 godziny i mózg mi wysiada, nie potrafię skonstruować zapytania w którym IP byłoby czymś unikalnym,
po prostu liczy mi jak leci że DATA 04:07:10 jest 8 sztuk i podaje IP 1.2.3 zamiast wyodrębnić tego na dwa wyniki z osobnym ip, a tym samym czasem :/ ohno-smiley.gif

Uwaga, jeśli nie da rady tego zrobić zapytaniem / zapytaniami bezpośrednio w MYSQL, to prosiłbym o jakiś kod PHP + MySQL, jeśli jakoś da się osiągnąć zamierzany przeze mnie cel.
Z góry dziękuję bardzo za jakiekolwiek odpowiedzi.

Ten post edytował kodepiko6 18.12.2011, 13:34:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Shili
post
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


  1. SELECT `data` , `imie` , `ip` , `typ`
  2. FROM `zapytanie`
  3. WHERE `typ` = 'raz'
  4. GROUP BY `ip` , `data`
  5. HAVING COUNT( `imie` ) >=3


Spróbuj czegoś w tym stylu.

Warunek WHERE jest oczywisty
Następnie następuje grupowanie po zbiorach ip i daty
I wybór tych rekordów, dla których imię powtarza się 3 razy.

Na moich przykładowych danych się zgadza.
W razie czego pokombinuj np. z dodatkowymi warunkami lub grupowaniem.

@edit
Przypadkowo poszło 2 razy.

Ten post edytował Shili 18.12.2011, 14:33:39
Go to the top of the page
+Quote Post
kodepiko6
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 18.12.2011

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


Dziękuję serdecznie za pomoc Shili, Twoje zapytanie okazało się perfekcyjne jak dla mnie.
Nie pokrywałem zbyt wielkiej nadziei, że w końcu ktoś zrozumie moje przesłanki, a tu proszę!
Serdeczne dzięki jeszcze raz! zakochany.gif

Ten post edytował kodepiko6 18.12.2011, 14:20:46
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 Aktualny czas: 22.08.2025 - 07:52