chodzilo mi o relacje w relacjach nr1 i 2 czyli jedno id jeden nick i jedno id jedna bron
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Plugin + baza danychOpis dobrego projektu bazy i dobrego używania jej w pluginie.
#21
Napisano 23.07.2014 22:50
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#22
Napisano 23.07.2014 23:13
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#23
Napisano 23.07.2014 23:15
jak dodać kilka nowych rekordów do jednej z tabel
tego nie zrozumialem myslalem że chce dodać kilka rekordów w jednym zapytaniu mając dane pogrupowane w relacjach w których kolumny są w relacji 1:1
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#24
Napisano 24.07.2014 09:02
INSERT INTO posiada (gid,bid) SELECT g.gid, b.bid FROM gracz AS g INNER JOIN bron AS b ON 1=1 WHERE (g.nazwa='%s' AND b.nazwa='%s') OR (g.nazwa='%s' AND b.nazwa='%s');Nie ma chyba potrzeby tłumaczyć, jak to zadziała
Co ciekawe, wcześniejszym sposobem z zagnieżdżonymi selectami się nie da, bo nie mamy możliwości "powiedzenia" SQLowi które rekordy mają ze sobą iść w parze...
Problem jednak pojawia się, gdy chcemy wstrzyknąć własne dane do tego... Ale rzuciłem na stacku pytanie o to, więc być może za chwilę będzie na to sposób
http://stackoverflow...om-other-tables
Ogólnie polecam stackoverflow przy tego typu problemach.
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#25
Napisano 24.07.2014 11:53
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#26
Napisano 24.07.2014 13:40
ON DUPLICATE KEY UPDATE przy takim insercie da się użyć... pytanie tylko czy na stacku ktoś podsunie rozwiązanie
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#27
Napisano 24.07.2014 13:47
INSERT INTO posiada (gid,bid) VALUES ((SELECT g.gid FROM gracz AS g WHERE g.nazwa='%s'),(SELECT b.bid FROM bron AS b WHERE b.nazwa='%s')), ((SELECT g.gid FROM gracz AS g WHERE g.nazwa='%s'),(SELECT b.bid FROM bron AS b WHERE b.nazwa='%s')) // i tak dalej ON DUPLICATE KEY UPDATE // coś tamjednak zajmuje sporo miejsca i jeszcze kwestia tego, czy duża ilość selectów, nie wpływa jakoś negatywnie.
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#28
Napisano 24.07.2014 14:12
a jak wprowadzasz dane do tego kodu? pokaż w jaki sposób chcesz tego użyć no chyba ze masz tablice z parami stringów i chodzi o to zeby dla kazdego elementu tablicy wykonac zapytanie wyżej podane i chcesz to zrobic w jednym zapytaniu? podaj jakies dane wejsciowe przyklad uzycia i rezultat
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#29
Napisano 24.07.2014 14:37
1. Można łatwo aktualizować x rekordów w bazie poprzez insert i duplicate key.
2. Nie dodajemy nowego pustego rekordu po tym, jak jakichś danych (np. gracza) nie ma w bazie.
To też zacząłem dyskusję na temat, jak to zrobić w przypadku kluczy obcych i nie mając id tych kluczy obcych. Bo skoro po zapytaniu select nie dostaniemy rekordu (także id), to też potem skąd niby wziąć id dla nowego rekordu do tabeli, gdzie te id jest potrzebne jako klucz obcy. W pewnym sensie, te zapytanie, które podałem we wcześniejszym poście, rozwiązywało by problem, ale teraz czy aby na pewno większa liczba selectów nie wpłynie negatywnie na działanie, no i czy nie da się tego zrobić jednak jakoś krócej.
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#30
Napisano 24.07.2014 14:58
da sie laczysz tabele wybierasz co chcesz i pakujesz do inserta
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#31
Napisano 24.07.2014 15:14
gracz (gid, nazwa) bron (bid, nazwa) posiada (gid, bid, unixtime) // dodałem jeszcze jedną kolumnę, która pomoże w opisaniu sytuacjii powiedzmy, że mamy 1000 graczy oraz 100 broni i chcemy dla 30 graczy dodać po 10 broni, ale nie posiadamy id tych 30 graczy oraz nie posiadamy id tych 10 broni, mamy tylko same nazwy, dodatkowo chcemy jakoś złapać duplikację kluczy i w momencie duplikacji aktualizować czas. I jak to zrobić krócej? Na tym kodzie co podałem, wyglądało by to mniej więcej tak
INSERT INTO posiada (gid,bid,unixtime) VALUES ((SELECT g.gid FROM gracz AS g WHERE g.nazwa='%s'),(SELECT b.bid FROM bron AS b WHERE b.nazwa='%s'),UNIX_TIMESTAMP()), ((SELECT g.gid FROM gracz AS g WHERE g.nazwa='%s'),(SELECT b.bid FROM bron AS b WHERE b.nazwa='%s'),UNIX_TIMESTAMP()) // i tak dalej ON DUPLICATE KEY UPDATE unixtime=UNIX_TIMESTAMP()ale to będzie sporo znaków, bo tych nowych rekordów będzie 300.
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#32
Napisano 24.07.2014 16:52
Wykorzystujac kod Gwyna
INSERT INTO posiada (gid,bid) VALUES SELECT g.gid, b.bid FROM gracz AS g INNER JOIN bron AS b ON 1=1 WHERE (g.nazwa='%s' AND b.nazwa='%s') OR (g.nazwa='%s' AND b.nazwa='%s'), SELECT g.gid, b.bid FROM gracz AS g INNER JOIN bron AS b ON 1=1 WHERE (g.nazwa='%s' AND b.nazwa='%s') OR (g.nazwa='%s' AND b.nazwa='%s'),
+ timestamp jedne select mniej
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#33
Napisano 24.07.2014 16:58
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#34
Napisano 24.07.2014 17:27
kazda linijka to zestaw nastepnych danych a co sie dzieje przy duplikacji robisz po insercie (nie chcialo mi sie robic nawiasów)
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#35
Napisano 24.07.2014 18:12
INSERT INTO posiada (gid,bid) VALUES SELECT g.gid, b.bid FROM gracz AS g INNER JOIN bron AS b ON 1=1 WHERE (g.nazwa='%s' AND b.nazwa='%s') OR (g.nazwa='%s' AND b.nazwa='%s');doda DWA rekordy, po to jest ten OR Z połączonych tabel gracz i bron zostaną wyciągnięte 2 rekordy dzięki niemu.
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#36
Napisano 24.07.2014 18:26
I w sumie tak właśnie to rozumiałem, ale goq coś nakręciłdoda DWA rekordy, po to jest ten OR Z połączonych tabel gracz i bron zostaną wyciągnięte 2 rekordy dzięki niemu.
A żeby było z duplicate key, to rozumiem, że
INSERT INTO posiada (gid,bid,unixtime) VALUES SELECT g.gid, b.bid, UNIX_TIMESTAMP() FROM gracz AS g INNER JOIN bron AS b ON 1=1 WHERE (g.nazwa='%s' AND b.nazwa='%s') OR (g.nazwa='%s' AND b.nazwa='%s') ON DUPLICATE KEY UPDATE unixtime=UNIX_TIMESTAMP()
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#37
Napisano 24.07.2014 22:39
nie zwrocilem uwagi na WHERE i nie zauwazylem OR moj błąd
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych