![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem ze stworzeniem pewnego SELECTA w MySQL: Mam tabelę: id|nazwa|typ_ceny|cena 1| cos1 | 1 | 1,1 2| cos1 | 2 | 1,2 3| cos1 | 3 | 1,5 4| cos2 | 1 | 2,2 5| cos2 | 2 | 2,6 6| cos2 | 3 | 3,0 chcę otrzymać taki rezultat: nazwa| cena1| cena2| cena3 cos1 |1,1 | 1,2 | 1,5 cos2 |2,2 | 2,6 | 3,0 Ktoś ma może pomysł jak to zrobić? Jak nie w MySQL to może w MsSQL? Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Jeżeli chcesz w kolumnach to
1) Przebuduj tabelę na taką jaka powinna być (czyli dodać te kolumny ceny) 2) Zbudować bardziej rozbudowane zapytanie coś w stylu
Ale nie polecam takiego rozwiązania 3) Rozbijać dane na kolumny z poziomu php (używają mojego zapytania) Nabardziej polecam rozwiązanie 1 Ten post edytował wookieb 12.11.2010, 16:47:53 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
ad. 1 nie mogę przebudować bo to tabela programu opartego handlowego na SQL(oczywiście mój przyklad został uproszczony)
ad. 2 wpisałem:
do MSSQL i działa. Bardzo mi to pomoże. Pytanie tylko dlaczego nie polecasz takiego rozwiązania? ad. 3 też o ty myślełem (funkcja chyba nazywa się explode) ale mój Mysql wyrzuca mi ten błąd 1064. Ciekawe może mam starą wersją serwera? Tak czy inaczej BARDZO DZIĘKUJĘ, bo prakycznie mój problem został rozwiązany (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
2) Bo jego wydajność jest mierna. DO podzapytań musisz jeszcze przekazać aktualną nazwę (tak jak w moim przykładzie) bo inaczej będziesz mieć te same wyniki. W innych przypadkach nawet błąd.
3) Jaka wersja Mysql? I jeżeli poniżej 5 to nie możesz zrobić upgrade? Ten post edytował wookieb 12.11.2010, 18:38:17 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Masz rację, dokładnie ma to wyglądać:
SELECT nazwa, cena AS cena1, (SELECT cena FROM cennik WHERE nazwa=a.nazwa typ = 2) AS cena2, (SELECT cena FROM cennik WHERE nazwa=a.nazwa typ = 3) AS cena3 FROM cennik a where typ = 1 O wydajność zbytnio się nie martwię, ponieważ takie zapytanie będzie się wykonywało tylko raz dziennie w celu przerzucenia cen z programu handlowego do mysql. Jeśli chodzi o wersję MySQL to wszystko jasne: 4.0.26. A, że pracuję na WebServ'ie to wypadałoby zmienić soft. Ciekawe, wiesz może co najlepiej spisuje się pod windowsem? Serwer nie ma dużego obciążenia, używany jest jedynie w sieci lokalnej... |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
To zapytanie co dałeś na pewno działa? Bo wydaje mi się, że nie. Mysql 5 w zupełności Ci wystarczy.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Oryginalne zapytanie wygląda tak:
tylko, że tu są 3 tabele TW-wyciągam id, kod nazwę i kod paskowy CN- ceny ułożone tak jak w moim przykładzie, ale muszą być aktywne i typceny=2 SM- stany magazynowe-wyciągam stan i stan handlowy
Może przy upraszczaniu coś źle pzepisałem, ale oryginalne zapytanie działa cacy |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 18:55 |