![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 27.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Potrzebuję pomocy ze skonstruowaniem zapytania SQL, a mój problem dotyczy dokładnie instrukcji ORDER BY: Otóż czy da się zrobić sortowanie wg tylko części (np. 2 znaków) z danej kolumny? Załóżmy, że mam takie wpisy w tabeli produktów: Kod KOD WYDAJNOSC POJEMNOSC AC 444 50 115 AC 222 50 110 AC 11 60 80 DC 22 30 90 DC 11 35 90 I chcę zrobić proste sortowanie ORDER BY KOD, WYDAJNOSC, POJEMNOSC z tym, aby do KOD brało tylko dwa pierwsze znaki, czyli aby w wynikach najpierw pojawiły się wszystkie produkty o początku kodu "AC", a następnie te o kodzie "DC" a dla produktów o takim samym początku kodu kolejnym kryterium ma być WYDAJNOSC a następnie POJEMNOSC. W efekcie chciałbym uzyskać kolejność AC 222, AC 444, AC 11, DC 22, DC 11. Dziękuję za wszelkie sugestie... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 5 Dołączył: 31.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
nie wiem czy da się wyciągając fragment tekstu to jakość posortować, ale napewno da się tak:
Mam nadzieje że sie nie machnąłem gdzieś z tymi nawiasami ![]() nie eleganckie i takie niejakie ale póki nie znajdziesz niczego lepszego dobre i to ![]() -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 27.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
A gdy takich produktów nie mam 4-5 tylko 500-600?
Wtedy trochę by mi zeszło pisać takie zapytanie ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 5 Dołączył: 31.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
a ten kod zawsze będzie mieć następujący wymiar: 2 literki, np. AB i cyferki lub cyferka?
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 27.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zakładam, że tak.
Posiadam też tabele, gdzie są kody produktów np. AC, EDC, ERE itd, ale wówczas zamiast dwóch literek wziąłbym pod uwagę 3. A po literkach są cyferki lub inne znaki (które mnie nie interesują). W każdym razie dla danego zapytania ilość literek jest stała. Ten post edytował sc0rpi0 19.10.2010, 16:37:34 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 5 Dołączył: 31.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
A normalne ORDER BY `KOD` ASC nie zadziała jak należy?
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 27.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie, bo ja chcę aby wzięło najpierw wszystkie AC (tak aby np. AC 222 było równe AC 444 i równe AC 11 - ze względu na takie same 2 pierwsze znaki) i dla nich zastosowało sortowanie po wydajności a potem po pojemności.
A przy zwykłym sortowaniu sortuje po całym kodzie (AC 222 jest różne od AC 333) i kryterium wydajności nawet nie stosuje, bo każdy kod jest inny. Czyli w wyniku mają być najpierw wszystkie AC posortowane wg wydajności (a gdy jest taka sama to po pojemności) a potem wszystkie DC (posortowane tak samo...). Ten post edytował sc0rpi0 19.10.2010, 16:49:43 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 5 Dołączył: 31.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
ok
podziel w takim razie `kod` na 2 części tak by oddzielnie było: AC i cyferki ![]() jeśli jest taka możliwość to wystarczy skorzystać z substr(`KOD`, 1, 2) - pokaże pierwsze 2 literki ciągu.. no i potem już wiadome od 3 lini i do końca - by wyliczyć ile do końca skorzystaj z funkcji length i gotowe ![]()
..ITD... Ten post edytował sniver 19.10.2010, 17:11:12 -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 27.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Coś właśnie takiego!
Świetnie, wielkie dzięki za szybką pomoc. Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:38 |