Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dodawanie rekordów, Dodawanie rekordów
sj314
post
Post #1





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

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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

Że co?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
toaspzoo
post
Post #3





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

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


Kod
insert into `tabela` set `kolumna` = 'wartosc`, `kolumna2` = 'wartosc2'; insert into `tabela2` SET `kolumna1`='w1';


i tak dalej

zapytania oddzielasz średnikami


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

LS Easter egg <
Go to the top of the page
+Quote Post
sj314
post
Post #4





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

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


  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.  
Go to the top of the page
+Quote Post
singollo
post
Post #5





Grupa: Zarejestrowani
Postów: 47
Pomógł: 1
Dołączył: 25.11.2003

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


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.

Ten post edytował singollo 9.06.2011, 09:28:24
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: 19.08.2025 - 09:10