Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie rekordów
Forum PHP.pl > Forum > Bazy danych
sj314
Witam wszystkich,
jestem początkujący i mam taki problem.

Mam dwie tabele z następującymi polami:

Sprzedaz:
- id_daty;
- wielkosc;

Data;
- id_daty;
- data;

Mam wielkość sprzedaży i datę sprzedaży. Jak dodać rekordy do tych dwóch tabel.
Nie chcę robić SELECT * FROM DATA WHERE data='19.06.2011' i dalej bawić się programowo. Chciałbym to wszystko zrobić w jednym zapytaniu.
Dodam też, że wstawianie rekordów do tabel będzie w bardzo duzej ilości - chciałbym aby było to możliwie najwydajniej.

Pozdrawiam
erix
Cytat
Jak dodać rekordy do tych dwóch tabel.
Nie chcę robić SELECT * FROM DATA WHERE data='19.06.2011'

Że co?
toaspzoo
Kod
insert into `tabela` set `kolumna` = 'wartosc`, `kolumna2` = 'wartosc2'; insert into `tabela2` SET `kolumna1`='w1';


i tak dalej

zapytania oddzielasz średnikami
sj314
  1. Mam taką strukturę bazy
  2.  
  3. Fakty-Sprzedaz Wymiar-Czas Wymiar-Towary
  4.  
  5. -------------------- ----------------------- -----------------------
  6.  
  7. Wielkosc Id_daty Id_towaru(Identity)
  8.  
  9. Id_towaru Data Nazwa_towaru
  10.  
  11. Id_daty Kwartal Kod_kreskowy
  12.  
  13. Dzien tygodnia Grupa_towarowa
  14.  
  15.  
  16.  
  17.  
  18. Mam dodać taką informację do bazy
  19.  
  20.  
  21. Wielkosc_sprzedazy|Data_sprzedazy|Nazwa_towaru|Kod_kreskowy|Grupa_towarowa
  22.  
  23. 12| 20-06-2011 | Mleko |112233 |Nabiał
  24.  
  25.  
  26.  
  27. Z tego co zrozumiałem to muszę najpierw wygenerować klucze dla wymiarów po to aby dodać rekord do tabeli faktów.
  28.  
  29.  
  30.  
  31. Mogę zrobić SELECT * FROM Towary WHERE Kod_kreskowy=112233
  32. i jeśli coś mi zwróci zapytanie to mam w tym momencie Id_towaru.
  33. Jeśli zapytanie zwróci pusty zbiór to wiem ze musze dodać rekord do tabeli towarów,
  34. potem znowu selcta i wtedy mam Id_towaru.
  35.  
  36.  
  37. Ale czy jest jakiś sposob zeby te wszystkie operacje zrobic w jednym zapytaniu SQL.
  38.  
  39.  
  40.  
singollo
Sorry, ale strukturę danych masz jakąś dziwną:
1. Wymiar-czas: pole 'Kwartal' jest pochodną pola 'Data'. Do usunięcia. Jak się ma 'Grupa_towarowa' do czasu? Wydawało by się, że jest to cecha produktu.
2. Data sama w sobie może być kluczem.

Proponuję taką strukturę danych:

  1. TABLE grupy_towarowe (
  2. grupa_towarowa_id INT NOT NULL AUTO_INCREMENT,
  3. nazwa VARCHAR(255),
  4. PRIMARY KEY(grupa_towarowa_id)
  5. );
  6.  
  7. TABLE towary(
  8. towar_id INT NOT NULL AUTO_INCREMENT,
  9. grupa_towarowa_id INT, -- klucz -> grupy_towarowe.grupa_towarowa_id
  10. nazwa VARCHAR(255),
  11. kod_kreskowy VARCHAR(255), -- nie wiem, jaki tu powinien być typ pola
  12. PRIMARY KEY(towar_id)
  13. );
  14. TABLE sprzedaz(
  15. DATA DATE,
  16. towar_id INT, -- klucz -> towary.towar_id
  17. wielkosc INT,
  18. PRIMARY KEY(DATA, towar_id)
  19. );


Jeszcze jedna sprawa: jeżeli towary.kod_kreskowy jest unikalny, to można rozważyć używanie go jako klucza głównego.
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-2025 Invision Power Services, Inc.