Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wszystko źle :)
mihmih
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

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


już jakiś czasu tworzę sobie małą bazę danych, a że na początku nie wiedziałem prawie nic o tym to projektowanie tabel pozostawiało wiele do życzenia smile.gif

w każdym razie mam tabelę produktów i operacje do nich przywiązane. I zamiast zrobić osobną tabelę z operacjami i tabele łączoną między nimi to w tabeli produkty mam kilkanaście pól boolean, gdzie zaznaczam czy dana operacja występuje, Chciałbym to naprawić, ale nie wiem czy jest jakieś magiczne polecenie (UPDATE....SELECT) które pomoże przenieść dane o operacjach z tabeli produkty do nowej tabeli, gdzie będę wpisywał ID produktu i ID operacji... Może ktoś mnie chociaż nakieruje na rozwiązanie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Raczej coś w stylu:
  1. INSERT INTO produkt_operacja
  2. SELECT id_produkt,recznie_nadane_id_operacji_1 FROM produkt WHERE pole_operacji_1=1
  3. UNION
  4. SELECT id_produkt,recznie_nadane_id_operacji_2 FROM produkt WHERE pole_operacji_2=1
  5. UNION
  6. ....


Jeśli jest dużo różnych operacji, to bez procedury lub skryptu w PHP może się nie obejść.


--------------------
Go to the top of the page
+Quote Post
mihmih
post
Post #3





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

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


dzięki, na razie wszystko sobie rozrysowywuje żeby czegoś nie zepsuć.

Ogólnie zależy mi na tym żeby zebrać wszystkie operacje wszystkich zamówionych produktów (wszystkie ID_produkt_operacja) i zrobić im GROUP BY ID_operacji, żeby zrobić osobną listę na każdą operację, gdzie będą tylko te produkty gdzie występuje dana operacja. W tabeli produkt_operacja będzie dodatkowo kolumna "kolejność", gdzie będę wpisywał liczby, tak aby ORDER BY ta kolumna dało kolejność wykonywania operacji w każdym produkcie. I wpadłem na pomysł, żeby przy moim zapytaniu, gdzie będzie ID_produkt_operacja, nazwa operacji, nazwa produktu itd dołożyć kolumny:poprzednia operacja i następna operacja....

jedyne co mi przychodzi do głowy to nadać numerację wg ID_produktu i "kolejność" i potem odwoływać się do tych operacji jako nadany numer - 1 i nadany numer + 1....ale może jest prostszy sposób?
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Pierwszej kwestii nie do końca rozumiem. Czemu chcesz zrobić GROUP BY? Przecież wyciągając te dane będziesz miał właśnie tylko te produkty, dla których wykonano operacje. GROUP BY mogłoby ewentualnie wyeliminować tą samą operację na tym samym produkcie.

Co do kwestii kolejności. Wydaje mi się, że tu wystarczy zwykły klucz sortowania, czyli czym nowsza operacja, tym większy klucz. Nie ma znaczenia czy będzie większy o 1,2 czy 10, ważne, że większy. Następną operację względem danej wyciągniesz poprzez zapytanie: WHERE klucz_sortowania>klucz_aktualnej_operacji ORDER BY klucz_sortowania LIMIT 0,1. W przypadku poprzedniej, odwrotny warunek i odwrotne ORDER BY.


--------------------
Go to the top of the page
+Quote Post
mihmih
post
Post #5





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

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


co do pierwszej kwestii to źle się wyraziłem - chcę te wszystkie elementy pogrupować podczas drukowania. To znaczy zapytanie jest bez GROUP BY, ale drukują się osobne karty produkcji dla każdej operacji. W raportach Libreoffice GROUP BY można zrobić właśnie na poziomie wydruku. A że tabelą główną w zapytaniu będzie produkt_operacja to jeśli jakiś produkt ma 3 operacje to pojawi się na 3 kartach produkcji. A jeśli żaden z produktów danego zamówienia nie ma operacji nr 5 to wtedy karta produkcji dla operacji 5 się nie wydrukuje.

Nie rozumiem co znaczy wyrażenie LIMIT 0,1. Do tej pory LIMIT znałem jako ograniczenie ilości rekordów w zapytaniu i występowało zawsze z jedną liczbą.
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: 21.08.2025 - 06:25