Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] złożone zapytanie select, - operacja na 3 tabelach z zliczeniem wartości spełniających kryteria
zaqaz
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.12.2012

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


Witam,
Chciałbym prosić o pomoc w sformułowaniu zapytania sql, które jak dla mnie (od kilku godziń człowieka który musi znać sql) jest niemożliwe do wykonania.

Zadanie (na ocalenia tyłka w szkole) polega na zbudowaniu zapytanie które operuje na trzech tabelach w jednej bazie.

Tabele:
tabela users
id | name | username | email
1 | emil | zaqaz | emil@email.pl

tabela baza_ip
id | id2 | ip
1(users_id) | 42 | 255.255.255.255

tabela result

id | id2 | position | number
X | 42(users2_id) | 10 | 12

ilość rekordów w każdej z nich "ma być dowolnie duża", ponadto, w tabeli baza_ip ip może powtarzać się dowolną ilość razy, dla dowolnego id (po mojemu, wielu użytkowników z tym samym ip?)
a w tabeli results dowolne id2 może posiadać dowolną ilość rekordów z rożnymi parametrami position i number (user id=42 może mieć position 10, 12 i 3 jednocześnie, number definiuje częstotliwość dla position)
edit: a gdyby założyć, że to zakup produktu i jego ilość - dla celów zobrazowania?

wynik zapytania miałby być następujący:

na bazie ip określić imiona i maile użytkowników oraz parametry position i number
przykładowy wynik:
emil emil@email.pl 10 12
emil emil@email.pl 1 19
emil2 emil@email.pl 7 12
emil3 emil@email.pl 15 12

Tak oto przyszły hotelarz walczy o przetrwanie na informatyce.
Próbowałem skontrować sam jakieś zapytanie ale szczytem finezji było zliczenie ile rekordów ma to samo ip lub imię, to mnie przerasta.

Mam nadzieję, że znajdzie się dobra dusza które pomoże mi się z tym uporać, z góry dziękuje za wsparcie.

Ten post edytował zaqaz 8.12.2012, 09:55:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zaqaz
post
Post #2





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.12.2012

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


Po usilnym błaganiu o namalowanie pytania dowiedziałem się, że tabela result może (na cele przykładu) służyć jaka baza odpowiedzi w ankiecie. User może udzielić wielu odpowiedzi, wiele razy. I tak, result_position to nr odpowiedzi (trzymany w innej tabeli, ale nie ma potrzeby podstawiania) a result_position o ile razu user wybrał tą odpowiedz - czyli jak dla mnie hitrate usera dla danej odpowiedzi.

Nie dyskutuję z logicznością tabel, bo te mam narzucone, do tego mam dorobić pytanie select tak, żeby osiągnąć opisany w pierwszym poście rezultat (dla przypomnienia), warunek where, lub jeden z nich bo chyba to wymaga jakiegoś zagnieżdżania, my być równy zdefiniowanemu z palca IP.

Czy takie uzupełnienie wystarczy, czy o coś jeszcze powinienem dopytać? Poza zasadnością gnębienia uczniów takimi wygibasami na tym kierunku... (IMG:style_emoticons/default/wink.gif)


Wymyśliłem sobie jeszcze taką rzecz...

  1. SELECT * FROM result AS v, users AS u WHERE v.user_id = u.user2 AND u.ip = "255.255.255.255"


pytanie dodatkowe brzmi, da się jakoś usunąc hurtem takie rekordy? zapytanie delete z tym samym warunkiem nie pomogło...

Ten post edytował zaqaz 9.12.2012, 17:51:52
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 11:36