Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] TABELA 3 -> TABELA 2 -> TABELA 1
Forum PHP.pl > Forum > Bazy danych > MySQL
acp
Witam, szukałem rozwiązania tego problemu w Googlach i w 2 książkach baz MySQL, ale nic nie znalazłem, bardzo proszę o pomoc, jeśli pytanie jest naiwne, bezsensowne, mało mądre to przepraszam.

Są 3 tabele, aby zilustrować powiem, że ma być to prosta baza faktur VAT. W 3 tabeli są artykuły. W 2 Tabeli są połączenia tych artykułów zindeksowana pod jakąś wartość, aby w jednej komórce nie wciskać wszystkiego, wiadomo ze na fakturze może być kilka pozycji. W 3 tabeli są wartości wczytywane z tabeli 2.


TABELA 3 [cennik]
1 ABC 100
2 CDE 200
3 EFG 300

TABELA 2 [co]
1 1 2 3 czyli. ABC 100, CDE 200, EFG 300
2 3 3 3 czyli. EFG 300, EFG 300, EFG 300
3 2 2 2 czyli. CDE 200, CDE 200, CDE 200

TABELA 1 [fvat]
Liczba wartosc 1 czyli. ABC 100, CDE 200, EFG 300 EFG 300, EFG 300, EFG 300 CDE 200, CDE 200, CDE 200

Liczba wartosc 2CDE 200, CDE 200, CDE 200 CDE 200, CDE 200, CDE 200 CDE 200, CDE 200, CDE 200

Liczba wartosc 3 CDE 200, CDE 200, CDE 200 CDE 200, CDE 200, CDE 200 CDE 200, CDE 200, CDE 200



w sumie to nie wiem jak przypisać pozostałe wartości w wierszu do klucza.
blooregard
A nie możesz inaczej ?

W tabeli 1 trzymasz dane na temat samej faktury (id: faktura_id) - data wystawienia, kwoty, numer faktury i inne potrzebne dane.
W tabeli 2 trzymasz dane nt. powiązania faktura_id -> towar_id (zakładam, że jest jakaś tabela z towarami) oraz np. z tabelą stawki_vat (po stawka_id) dla każdego towaru
W tabeli 3 trzymasz faktura_id oraz dane z tabeli np. klienci po klient_id (taka tabela łącząca wszystkie tabele z danymi wymaganymi na fakturze).

Teraz dla przykładowej faktury masz następujące rekordy:
Tabela 1 - faktura
faktura_id data_wyst nr_fakt kw_net kw_brutto ... itd.
1 01.01.2000 01/2000 1000.00 1220.00
Tabela 2 faktura-towar
id faktura_id towar_id
1 1 123 <- to id rekrdów w tabeli towary, gdzie trzymane są szczegółowe dane na ich temat: nazwa, cena, waga itp.
2 1 432
3 1 490
(co przekłada się na to, że na tej fakturze są trzy towary)

Tabela 3 faktura-klient
id faktura_id klient_id
1 1 234 <- to id rekordu w tabeli klienci (dane np. Firmy Pana Kazia)

Teraz tworzymy fakturę (wyciągamy dane):
Kod
SELECT * FROM faktura F , faktura-towar FT, faktura-klient FK
            INNER JOIN FK ON FK.faktura_id = F.faktura_id
            LEFT JOIN FT ON F.faktura_id = FT.faktura_id


To zwróci Ci trzy rekordy, w każdym będziesz miał dane nt. faktury, klienta i kolejnego towaru z faktury .

PS. Nie testowałem tego, tak z głowy piszę, więc zapytanie można na pewno skonstruować inaczej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.