PHP, MySQL Relacje baz, wyświetlanie wartości na podstawie powiązań między bazami


(jondoes) #1

Jestem nowym użytkownikiem i chciałbym się na wstępnie przywitać. Cześć wszystkim!
Ostatnio zacząłem ogarniać PHP i MySQL. Zaprojektowałem sobie mały system sprzedażowy ale mam problem z jedną rzeczą. Potrzebuję powiązać ze sobą wartości z poszczególnych tabel.
Załóżmy, że mam tabelę sprzedaż, w której znajdują się zamówienia:

| id | imie | nazwisko | adres | status |
| 1 | Jan | Kowalski | Kwiatkowa | 2 |

Mam również tabelę status:
| id | status |
| 1 | przyjęto |
| 2 | w trakcie |
| 3 | zrealizowano |

Teraz w PHP w pętli robię sobię tabelkę ze wszystkimi zamówieniami. Chciałbym jednak, żeby status nie był określany liczbą, tylko tekstem z tabeli status. Czyli jak status równa sie 1, to żeby było “przyjęto”. Jak to zrobić?


(Fizyda) #2

W takim przypadku musisz użyć zwykłego SELECT oraz JOIN. JOIN łączy dane z dwóch tabel w jedną, a SELECT pobiera dane z bazy danych. O obu musisz sobie poczytać.

Generalnie niedługo (jak się ogarnę) będę miał na sprzedaż kilka dobrych książek dla początkujących na temat web developmentu, gdybyś był zainteresowany możesz do mnie napisać na PW to Ci powiem co i jak. Na forum też dam o tym info w dziale giełda, ale to jak się ogarnę pewnie pod koniec tygodnia.


(Pablo_Wawa) #3

Tu nie trzeba książek, wystarczy prosty tutorial z netu: https://www.w3schools.com/sql/sql_join_left.asp

SELECT sprzedaz.imie, sprzedaz.nazwisko, status.status
FROM sprzedaz
LEFT JOIN status ON sprzedaz.status = status.id
ORDER BY sprzedaz.id;


(jondoes) #4

Dzięki serdeczne za odpowiedzi! :slight_smile: Szperając w internecie znalazłem jednak inne rozwiązanie problemu
SELECT sprzedaż.id, sprzedaż.imie, sprzedaż.nazwisko, sprzedaż.adres, status.status
FROM sprzedaż, status
WHERE sprzedaż.status = status.id

Co ciekawe, nei znalazłem żadnego ciekawego kursu, który omawiałby takie zagadnienia.

Fizyda, z pewnością odezwę się do Ciebie.


(hindus) #5

SELECT z kilku tabeli to przestarzała składnia, której nie zaleca się już stosować ze względu na niejednoznaczność.
Co więcej, moim zdaniem każdy kurs SQL opiera się również o JOIN bo to absolutna podstawa w relacyjnych bazach danych.