![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 152 Pomógł: 4 Dołączył: 4.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
Proponuje abyś po ludzku nazwał tabele, opisał co ma się dziać i wtedy sklepiemy te zapytanie. Nie rozumiejąc modelowanego wycinka rzeczywistości jest to trochę bezsensowne
![]() Pozdrawiam -------------------- C/C++/C#/JAVA/SQL ( funkcje, procedury, pakiety ).
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 8.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Cały szpil polega na tym, że to forma naturalna, tak mam skonstruowane zadanie.
Ja to to rozumiem, tak, że w wyniku zapytania mam dostać listę userów i ich akcji/lub zajmowanych miejsc na bazie głosów? bazując na IP. Trudno mi to odnieść do czegoś, bo o ile wydaje mi się to (w miarę) sensowne działanie, to np. zmiana "treści" zdania tak by mechanizm był taki sam w ogóle mnie przerasta. Zmieniłem tytuł drugiej tabeli z users2 na baza_ip ale w praktyce nic to nie zmienia... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 152 Pomógł: 4 Dołączył: 4.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
Jeden użytkownik może mieć wiele adresów IP ( ok ), czym jest tabela Result ponawiam??
Tutaj przez to zapytanie dostaniemy e_mail, pozycje i oraz imię użytkownika o id_uzytkownika=1. Można też robić selekecje po IP, w sumie to nie wiem za bardzo o co chodzi. -------------------- C/C++/C#/JAVA/SQL ( funkcje, procedury, pakiety ).
|
|
|
![]()
Post
#5
|
|
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... ![]() Wymyśliłem sobie jeszcze taką rzecz...
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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 09:51 |