![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Cześć!
Aktualnie pracuję nad systemem w którym kilka osób może sobie `przygarnąć` jeden rekord z mysql. Myślałem aby to zrobić tak że w bazie będzie pole `users` i przykładowa w nim wartość to: `user1, user2, user3` gdyż nie wiem ile userów może sobie rekord `przygarnąć`. Dodanie tego to pryszcz jednak w jaki sposób usunąć np. wartość `user2 ,` bez usuwania reszty ? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
w rozwijaniu bazy idz w dol nie w bok.
stworz tabele laczaca danego usera z wierszem z innej tabeli. jak bedziesz chcial usunac usuniesz tylko to przypisanie - wtedy bedziesz wiedzial ze user nie jest powiazany z tym wierszem. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Będzie to niezbyt możliwe gdyż system który tworzę jest bardzo zaawansowany.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
przy takim wykonaniu to daleko mu do zaawansowanosci
![]() zrob jak polecil AxZx - jedyne sensowne rozwiązanie No chyba ze system jest az tak zaawansowany, ze tak prostych rozwiazan nie mozna zastosowac ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Niestety ale nie mam czasu Ci tego tłumaczyć nospor. Nie wszyscy piszą fora i systemy newsów. Pozdro i dzięki
Ten post edytował wlamywacz 30.07.2008, 13:47:54 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 422 Pomógł: 0 Dołączył: 14.12.2005 Skąd: Wałbrzych Ostrzeżenie: (0%) ![]() ![]() |
Cytat Niestety ale nie mam czasu Ci tego tłumaczyć nospor bo nie mam czasu. Yhm.. Nie masz czasu tłumaczyć, bo nie masz czasu? ![]() Bardzo zaawansowane systemy wymagają zaawansowanych rozwiązań. Twoje rozwiązanie jest złe, idziesz złą drogą. Rozwiązanie AxZx ułatwi Ci wiele spraw. -------------------- Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Fakt pomyliłem się bo się śpieszyłem. Pole to służy tylko do wyświetlenia kto przygarnął dany rekord aby odciążyć system. Właściwa lista znajduję się w osobnej tabeli.
Btw. Dzisiaj 18 urodziny ^^ Ten post edytował wlamywacz 30.07.2008, 13:50:59 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Pole to służy tylko do wyświetlenia kto przygarnął dany rekord aby odciążyć system. Właściwa lista znajduję się w osobnej tabeli. No i wlasnie "tylko do tego" najlepszym rozwiązaniem jest dodatkowa tabela wiążąca. Predzej czy później sie o tym przekonasz, szczegolnie ze piszesz "bardzo zaawansowany" system. Więc chyba lepiej by sie o tym dowiedzial wczesniej i skorzystal z rad bardziej doswiadczonych userow, poto chyba pytasz na forum?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Tabela istnieje, jednak musiałbym wykonać dla każdego rekordu osobne zapytanie pobierające kto ma przygarnięty ten rekord a gdy tych rekordów będzie ze 100 to robię 100 dodatkowych zapytań.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat a gdy tych rekordów będzie ze 100 to robię 100 dodatkowych zapytań. ![]() Jedno zapytanie. Rekordow moze byc nawet 1000 a i tak do pobrania kto ma cos przygarnietego wystarczy jedno zapytanie. Jak masz problem to sie dopytaj a nie wymyslac jakies cudne teorie ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ja bym zrobił osobne pole np. "przygarniete", w którym przechowywałbym id przygarniętych rekordów rozdzielone jakimś separatorem np. |:
Kod 1|2|3|4|5 Głupie? No pewnie, że głupie. Może zanim zaczniesz pisać zaawansowane aplikacje sięgnij do podstaw projektowania baz danych... To taka moja sugestia. Jedyne poprawne rozwiązanie w tej sytuacji to osobna tabela z dwoma kolumnami łącząca rekord-matkę z rekordem-przygarniętym (tak jak napisał ~AxZx). Swoją drogą: zaawansowany system i 100 rekordów? Piszesz jakąś wypasioną księgę gości? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
To powiedz mi jak do tego zapytania dorzucić pobranie userów z tableli `uwork` gdzie `uwork`.`id_work` = `work`. `id`. |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Napisze konkretnie co chcesz zrobic, bo sie chyba zgubilem. Przeciez userow juz pobierasz.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
No właśnie to jest zaawansowany system
![]() |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat No właśnie to jest zaawansowany system to ty zaawansowanych systemow nie widziales.ja sie zgubilem nie dlatego ze to takie "zaawansowane" ale dlatego ze nie wiedzialem oco ci chodzi. lekka roznica wiec sie tak nie podniecaj
oczywiscie w php bedziesz musial to odpowiednio pobrac, bo ci pare rekordow zwroci. Od biedy mozna by sie zabawic w group by i concat edit: tak sobie przez noc pomyslalem jeszcze, ze mozesz sobie troche ulatwic sprawe i rozbic to zapytanie na dwa (zauwaz ze mowie dwa a nie sto ![]() Pierwsze zapytanie takie co miales do tej pory. Drugie zapytanie, ktore dla znalezionych rekordow z pierwszego zapytania, szuka rekordow z powiązanych tak jak chcesz. W efekcie otrzymasz to samo jakbys dal to wszystko w jednym, ale przy tej drugiej opcji latwiej ci bedzie moze to ogarnac -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
@nospor ma rację. Ja osobiście często korzystam z takiego rozwiązania.
Przykładowo mamy produkty i każdy produkt może należeć do wielu kategorii. Trzeba teraz wyświetlić listę produktów wraz z kategoriami (w postaci linków), do których one należą. Można zrobić SELECT'a pobierającego potrzebne produkty, a potem przy wyświetlaniu w pętli pobierać jeszcze kategorie. Mamy wtedy n+1 zapytań, gdzie n to liczba znalezionych produktów. Można jednak do tego podejść inaczej. Najpierw pobierasz produkty, które cię interesują. Następnie (w pętli) zapisujesz ich id do tablicy. Drugim zapytaniem pobierasz kategorie tych produktów, które zawierają się w tej tablicy (WHERE product_id IN ('.implode(', ', $array).')). Sprytne zapisanie tych danych do tablicy (indeks tablicy = id produktu) i już jesteś prezes. Wystarczy pokombinować. Z n+1 zapytań robią się 2. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Mieliście rację że to cholerstwo się na mnie zemści
![]() ![]() No i muszę przepisać te kilkanaście zapytań do bazy bo nie mam jak wyzwalaczy odpalić : ( Pozdrawiam Ten post edytował wlamywacz 7.08.2008, 19:12:13 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No a co ci nie pasuje w moim poprzednim poscie?
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Niestety zapytanie:
Zwraca jeden rekord podczas gdy powinny być dwa ![]()
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 11:45 |