Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] jak wyciągnąc z tabeli
totyl
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 10.03.2011

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


Mam w tabeli:

person_id parametr wartość
1 imie john
1 nazwisko black
2 imie bob
2 nazwisko white
3 imie fred
4 nazwisko red

Chciałbym wyciągnąć dane w postaci:

id imie nazwisko
1 john black
2 bob white
3 fred NULL
4 NULL red

Nie mam pomysłu na zrobienie tego...
Czy ktoś ma jakiś pomysł?

Pozdrawiam.
totyl

Ten post edytował totyl 10.03.2011, 22:37:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
cojack
post
Post #2





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Que? Pokaż jak tabela wygląda.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Da się ale jeżeli chcesz to zrobić w postaci SQL-a to będzie to strasznie nieoptymalne. obrób te dane ręcznie w PHP i zapisz w jakimś cache.


--------------------
Go to the top of the page
+Quote Post
sn1p3r
post
Post #4





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 9.03.2011

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


Cytat(totyl @ 10.03.2011, 22:36:19 ) *
Mam w tabeli:

person_id parametr wartość
1 imie john
1 nazwisko black
2 imie bob
2 nazwisko white
3 imie fred
4 nazwisko red

[...]


Czemu taka dziwna struktura?
Nie może być tak?
person_id | imie | nazwisko |

?


--------------------
Michał Gruchała
scaleIT.pl
Go to the top of the page
+Quote Post
totyl
post
Post #5





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 10.03.2011

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


Cytat(sn1p3r @ 12.03.2011, 10:21:52 ) *
Nie może być tak?
person_id | imie | nazwisko |

?


Nie. Musi być tak ja napisałem.
Bo nie wiem jak będzie docelowo wyglądać tabela a chcę uniknąć alter-owania jej co chwila. Może pojawi się dla każdej osoby np: data urodzenia, stan cywilny czy cokolwiek bądź.

Pozdrawiam
totyl

Cytat(wookieb @ 12.03.2011, 04:18:07 ) *
Da się ale jeżeli chcesz to zrobić w postaci SQL-a to będzie to strasznie nieoptymalne.....


Tylko i wyłącznie w postaci SQL. Masz jakikolwiek pomysł?

Pozdrawiam
totyl



Cytat(cojack @ 11.03.2011, 23:43:17 ) *
Que? Pokaż jak tabela wygląda.


Tak jak napisałem.

person_id parametr wartość

Ten post edytował totyl 12.03.2011, 11:52:39
Go to the top of the page
+Quote Post
cojack
post
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


To baw się sam.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
wiiir
post
Post #7





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

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


Czyli jesli dobrze rozumiem, jezeli bedziesz mial 20 pol z danymi to bedzie 20 rekordow o ID 1 ?
Hahahahahahaha powodzenia...

Jezeli nie chcesz robic "alterowania" to zrob sobie 2 dodatkowe pola w swojej tabeli, definicja i wartosc

Przykład definicji
  1. $definicja = 'IMIE|NAZWISKO|TELFON|MAIL';


Przyklad wartosci
  1. $wartosc = 'JAN|KOWALSKI|123-456-789|JAKIS@MAIL.PL'


I teraz zrob sobie explode po znaku "|" dla definicji i wartosci, potem petla do tabeli asocjacyjnej w postaci
  1. $def = explode('|',$definicja);
  2. $val = explode('|',$wartosc);
  3. $i=0;
  4. while($i<=count($def)) // obojetnie co w sumie i tak ilosc def i val musi byc taka sama
  5. {
  6. $arr[$person_id][$def[$i]] = $val[$i];
  7. $i++
  8. }


Potem tylko dodatkowe funkcje ktore dadza return oczekiwanych wartosci, budowania definicji i wartosci .... i 100 innych ktore beda potrzbne
  1. $arr[1]['IMIE'] // => john
  2. $arr[1]['NAZWISKO'] // => black

Ja osobiscie stosuje powyższe rozwiaznie tylko i wylacznie w przypadku kiedy operator systemu buduje sobie slowniki ktore moga sie skladac z niewiadomej ilosci danych (tabela - kolumny i rowsy)... jeszcze mnie nie zawiodlo smile.gif (mimo iz ciezko sie to czyta w surowej postaci na bazie)

Ale jesli chodzi o jakies dane (pola) na ktore zwykly operator systemu (uzytkownik) nie ma wplywu a jedynie jest to wymagane przez zmiane w projekcie czyli twoj klient ci powiedzial ze teraz chce miec w formatce 3 telefony zamiast 1 to sie dodaje kolumny do tabeli i zmienia w aplikacji odpowiednie linijki smile.gif

Ten post edytował wiiir 16.03.2011, 23:06:40
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Nie. Musi być tak ja napisałem.
Bo nie wiem jak będzie docelowo wyglądać tabela a chcę uniknąć alter-owania jej co chwila. Może pojawi się dla każdej osoby np: data urodzenia, stan cywilny czy cokolwiek bądź.
Najdurniejsze wyjaśnienie jakie słyszałem :/ Tylko dlatego, że być może kiedyś będziesz musiał dodać kolejne pole, to tworzysz tak nieoptymalną bazę danych. Brawo. tongue.gif
Poza tym co ty za bazę tworzysz, ze nie wiesz czy tam będzie data urodzenia czy nie...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
vermis
post
Post #9





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

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


Cytat(totyl @ 12.03.2011, 11:54:41 ) *
Nie. Musi być tak ja napisałem.
Bo nie wiem jak będzie docelowo wyglądać tabela a chcę uniknąć alter-owania jej co chwila. Może pojawi się dla każdej osoby np: data urodzenia, stan cywilny czy cokolwiek bądź.

Czyli piszesz system i nie wiesz jak docelowo ma wyglądać? Rozumiem, że aplikacja będzie się rozwijać, ale chyba jakieś wstępne założenia masz?
Swoją drogą dodanie pola do tabeli nie jest chyba aż takim problemem. Dla mnie więcej problemów wyniknie przy twoim rozwiązaniu. Takie rozwiązanie jest dobre, jeśli pozwalasz użytkownikom definiować własne właściwości.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 18:31