![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 4 Dołączył: 30.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam tabelę przechowującą rekordy w formacie name1 | number1 | number2 | name2 i chciałem zrobić skrypt który grupuje linijki z takimi samymi rekordami w ten sposób: qwe | 12 | 5 | asd asd | 5 | 12 | qwe tak żeby łączyć takie same wyniki przesyłane przez userów tak, żeby się zgadzały (przesyłający to zawsze 1), a linijki bez pary wyświetlać osobno/w innym kolorze. Bardzo proszę o pomoc. Dam pomógł każdemu, kto się przyczyni do chociaż małego postępu (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 511 Pomógł: 143 Dołączył: 13.03.2010 Skąd: Jasło Ostrzeżenie: (0%) ![]() ![]() |
1. Chyba nie rozumiesz co to znaczy zwrot: "grupuje linijki z takimi samymi rekordami".
a. "linijka, wiersz, rekord" - w tabeli bazy danych można uznać za synonimy, czyli piszesz że: "grupuje rekordy z takimi samymi rekordami" b. "grupowanie oznacza" redukcję redukcję lub brak zmiany liczby rekordów, która przebiega na podstawie jakiegoś wzorca. c. "z takimi samymi", rekord taki sam jak inny rekord to taki który ma takie same wartości w takiej samej kolejności. Konfrontując to z przykładem danych wynikowych który podajesz: qwe | 12 | 5 | asd asd | 5 | 12 | qwe Pierwszy problem jaki widzę to nie widzę tu jednakowych rekordów. Bowiem jednakowe rekordy wyglądały by tak: qwe | 12 | 5 | asd qwe | 12 | 5 | asd Więc coś tuta już się nie zgadza. _________________________ Dalej: "tak żeby łączyć takie same wyniki przesyłane przez userów tak, żeby się zgadzały" 1. Co rozumiesz przez takie same wyniki? Czyli jakie warunki muszą spełniać wyniki by były takie same? 2. Co rozumiesz przez "tak żeby się zgadzały"? Czyli jakie warunki muszą spełniać żeby się zgadzały? ________________ "(przesyłający to zawsze 1)" Czyli name1 number1 to przesyłający, a name2 number2 to odbierający? Dlaczego więc nie nazwiesz tych pul jakoś bardziej sensownie, by od razu po nazwie można było zrozumieć o co chodzi np. senderId, senderName, recipientId, recipientName _________________ Podsumowując nie wiadomo o co Ci chodzi. Już lepiej jakbyś zamiast używania pojęć których chyba do końca nie rozumiesz szczegółowo opisał co chcesz osiągnąć. Wydaje mi się że robisz jakiś system przesyłania czegoś i chcesz sobie zrobić tabelę gdzie te wszystkie transfery czegoś mógłbyś sobie zobaczyć. Ale sposób prezentacji danych po tym co napisałeś nie jest do końca jasny. Musisz się dokładnie zastanowić w jakiej kolejności mają być wyświetlane te transfery, jakie dane mają się tam ukazywać. Jeżeli dalej chcesz uzyskać pomoc, postaraj się napisać zrozumiale o co Ci chodzi. Ten post edytował jaslanin 8.08.2011, 17:03:38 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 4 Dołączył: 30.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Sorry za to, że napisałem tak skomplikowanie, ale pisałem tak na chłopski rozum.
A więc chodzi o to, że 2 userów wysyła wyniki formularzem nick 0:0 nick i zapisuje to do tabeli name1 | wynik1 | wynik2 | name2 jeśli, na przykład, user1 grał z userem2 i wynik to 4:2 to wysyłają wyniki do bazy danych: user1: user1 | 4 | 2 | user2 user2: user2 | 2 | 4 | user1 i powiedzmy że grało 10 osób, każdy z każdym, i chcę żeby mnie, jako adminowi, wyświetlały się te wyniki w parach, jeżeli się zgadzają, a jeśli ktoś wprowadził błędny wynik, bądź nie ma pary, to żeby się to wyświetlało osobno (mam nadzieję, że nie namieszałem) Da się parować w ten sposób? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 511 Pomógł: 143 Dołączył: 13.03.2010 Skąd: Jasło Ostrzeżenie: (0%) ![]() ![]() |
Mi się wydaje że każdy mecz powinien być zapisywany w jednym rekordzie, a nie w dwóch tylko z "odwrotnych stron".
Innym sposobem jest utworzenie dodatkowych kolumn których można by używać w klauzuli order by: 1. Utworzenie kolumny meczId w której byłby unikalny identyfikator meczu który miałyby oba rekordy meczu. I sortowanie po nim. 2. Np jeżeli user1, user2 są unikalnymi nieujemnymi identyfikatorami użytkowników można by było zrobić dwa dodatkowe pola maxUser, miUser i wstawić w te pola odpowiednio maksymalny i minimalny identyfikator. Potem sortowanie po tych polach. Ale to tylko są takie przypuszczalne rozwiązania. Bo żeby coś w tym przypadku pomóc trzeba więcej informacji o projekcie bazy danych i jakie role ma spełniać. W każdym razie dobrze żebyś zapoznał się z zasadami normalizacji bazy danych jeżeli jeszcze tego nie zrobiłeś. Ten post edytował jaslanin 11.08.2011, 19:37:31 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 4 Dołączył: 30.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
chodzi o to, że nie mam jak sprawdzić wyników userów, i jeśli ktoś skłamie, żebym widział, że rekordy się nie zgadzają, i że jest błąd. Potem mogę ręcznie już poprawne wyniki wprowadzać (IMG:style_emoticons/default/tongue.gif) Z tym unique ID mi podsunąłeś pomysł, żeby mecz składał się z ID userów razem, przedzielone myślnikiem. Mniejszy nr zawsze będzie mniejszy, i wtedy nie będzie problemów (IMG:style_emoticons/default/biggrin.gif) Jak będę miał czas, to to napiszę. Dzięki za pomysł (IMG:style_emoticons/default/smile.gif)
ok, teraz nie wiem jak parować rzędy z bazy MySQL wg 1 kolumny... pomoże ktoś? A więc chodzi o to, że w tabeli są wyniki w formie name1 | wynik1 | wynik2 | name2 | uniqueID qwe | 12 | 5 | asd | 1337 asd | 5 | 12 | qwe | 1337 i chciałbym, żeby rzędy parowały się względem uniqueID, a potem porównywały wyniki. Jeśli tak się nie da, to po prostu zrobię, żeby name 1 był zawsze wybierany alfabetycznie, wtedy będzie o wiele łatwiej. Jakoś na razie nie mam pomysłów jak to zrobić, ale posiedzę nad tym i pokombinuję. No, chyba, że ktoś wpadnie na lepszy pomysł, to byłbym wdzięczny. @edit Ok, dałem sobie radę, ale jest jeden mały problem. zrobiłem MySQL query
i teraz porównuję total1 do total2. Wygląda to tak: name1 | wynik1 | wynik2 | name2 | uniqueID qwe | 12 | 5 | asd | 1337 asd | 5 | 12 | qwe | 1337 --------------------------------------------------------- total1=17 total2=17 wszystko działa idealnie, dopóki nie będzie wyników w ten sposób: name1 | wynik1 | wynik2 | name2 | uniqueID qwe | 12 | 5 | asd | 1337 asd | 6 | 13 | qwe | 1337 --------------------------------------------------------- total1=18 total2=18 I nie wiem co na to poradzić. Jest jakiś inny na to sposób? Albo czy się da jakoś to poprawić? @odświeżam Ten post edytował Wilwarin 12.08.2011, 17:31:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:21 |