Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP]łączenie danych z rekordów
fr33d0m
post
Post #1





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


Hello,

Mam skomplikowany problem i nie wiem jak się za niego zabrać...
Załóżmy, że tabela ma 10 kolumn i 10 rekordów - każdy rekord ma: różną lub taką samą lub brak wartości.
Cechą wspólną wszystkich rekordów niech będzie kolumna o nazwie "szukam" o wartosci "123".



Jak skonstruować zapytanie, które wyświetli mi KOMPLETNE dane dla wartości 123? Zakładając, że za pomocą jednego rzędu rekordów nie wyświetlę kompletnych danych ponieważ są braki w kolumnach? Nie wiem jak to jaśniej opisać - mam nadzieję, że ktoś zrozumie... (IMG:style_emoticons/default/wstydnis.gif)
Go to the top of the page
+Quote Post
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Teoretycznie da się coś takiego zrobić złączeniami może lecz to chyba nie najlepszy pomysł. Jeśli dobrze Cię rozumiem to przy założeniu że mam 4 kolumny (a nie 10) wygląda to tak:

Kod
a | - | - | 123
- | b | - | 123
x | y | z | 124
- | - | c | 123


i chciałbyś aby zwrócić dla 123 rekord tak by wyszło a,b,c? A co jeśli jest np 5 takich rekordów i w jednym polu masz rózne wartości? Którą zwrócić?

Ogólnie mi to się wydaję jakimś antywzorcem struktury bądź złym sposobem umieszczania danych.

Jeśli masz wiele rekordów dotyczących tego samego "123" to nie powinno tak być tylko do jednego powinny być dopisywane pola które uprzednio były puste...

Może coś źle rozumiem - rozpisz to bardziej (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
fr33d0m
post
Post #3





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


Dzięki za odpowiedź Sephirus (IMG:style_emoticons/default/smile.gif)
Perfekcyjnie zrozumiałeś moje pytanie. Jeśli będzie 5 takich rekordów i w jednym polu będą rożne wartości to wybrać pierwszą lepszą - bez większego znaczenia.
Gdybyś mógł zarzucić prowizorycznym kodem dla pomocy jak to ma mniej-więcej wyglądać to przynajmniej będę wiedział jak mam wziąć się za to...

Ogólnie polega to na wyświetlaniu np. miejsca z poszczególnym opisem takim jak np. ulica, miejscowosc, ocena itp.
Rozwiązałem to w ten sposob, ze uzytkownik gdy dodaje `nowe miejsce` do bazy, to wpisuje obowiazkowo wylacznie tytul i miejscowosc - reszta pól z opisem dokladniejszym `miejsca` jest nie obowiazkowa. Robi sie jeden nowy insert do jednej tabeli i pozniej to wyswietlam, z tym, ze pobieram wszystkie informacje na temat danego `miejsca` z wszystkich INSERTOW zrobionych na temat tego danego miejsca(tak jak powyzej to zademonstrowałeś). Nie wiem jak to zrobic inaczej... będę wdzięczny za poradę. Nie chcę robić tego w taki sposób, że przed zrobieniem INSERTA z nowym miejscem - sprawdzam w bazie czy dane miejsce o podanej nazwie juz istnieje i UPDATOWAC zamiast INSERTOWAC - poniewaz jak wiadomo, uzytkownicy lubia robic pomylki we wpisywaniu konkretnej nazwy miejsca, a pozniej przy wyswietlaniu zrobil by sie jeden wielki burdel. Ogolnie to faktycznie powinienem zmienic calosc - tylko w jaki sposob zrealizowac takie zalozenie? Ma ktos pomysly?

Ten post edytował fr33d0m 13.12.2012, 14:43:32
Go to the top of the page
+Quote Post
Wazniak96
post
Post #4





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


Jeśli dobrze zrozumiałem to do tabeli są dodawane miejscowości z jakimiś tam danymi. A dodaje następne po to, żeby w razie pustego pola w innych uzupełniło je. tak.?
Jeżeli tak to możesz zrobić to jednym rekordem, a przy następnym dodawaniu rekordu updatować jedynie te pola które są puste.

Jeżeli na siłę musisz zrobić tak jak masz, że kilkoma to pokombinuj coś z implode() bądź też stwórz tablicę(wyglądającą, i zawierającą te same pola co z bazy) i w pętli puść rekordy uzupełniając poszczególne elementy tablicy jeżeli są puste ;p
Go to the top of the page
+Quote Post
fr33d0m
post
Post #5





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


Wazniak96, dobrze zrozumiales - problem w tym, ze nie zrobie poprawnego UPDATE jesli uzytkownik wprowadzi chociazby odrobine inna nazwe danego `miejsca` (swiadomie badz nie).
Rekordy uzupelniajace to faktycznie jest jakies wyjscie z problemu i jesli nikt nic lepszego nie zasugeruje to chyba tak zrobie:)
Go to the top of the page
+Quote Post
timon27
post
Post #6





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Możesz skorzystać z funkcji MAX - działa ona również na ciągach (leksykograficznie).

  1. SELECT MAX(kolumna1),MAX(kolumna2),MAX(kolumna3) FROM baza GROUP BY szukam


Da ci dokładnie to czego szukasz.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 23:10