Sortowanie z wielu kolumn

2011-09-16 13:36
0

Witam

Zastanawiam się jak stworzyć zapytanie sortujące kilka kolumn (kolumn data jest 12 w mojej bazie) czy jest ono możliwe?

Mam tablice:

-----------------------------------------
|   Nazwa    | data A | data B | data C |
-----------------------------------------
| product 1  |  2010  |  2001  |  2005  |
-----------------------------------------
| product 2  |  2002  |  2004  |  2009  |
-----------------------------------------
| product 3  |  2011  |  2000  |  2015  |
-----------------------------------------

a wynik chciał bym uwzględnić w kolejnosci od najnowszych do najstarszych dat z opcja limit 10 przykladowy wynik który chce uzyskać:

2015 produkt 3
2011 produkt 3
2010 produkt 1
2009 produkt 2
2005 produkt 1
2004 produkt 2
2002 produkt 2
2001 produkt 1
2000 produkt 3

czy jest to wykonalne? jak takie cos uzyskac?

edytowany 1x, ostatnio: madmike, 2011-09-18 18:51

Pozostało 580 znaków

2011-09-16 13:48

Beznadziejny projekt tej tabelki, jeśli możesz to zmień to natychmiast.
Najpierw musisz dojść do takiej formy jak chcesz żeby ją posortować.

select nazwa, data from
(
select nazwa, dataA as data from T
union all
select nazwa, dataB from T
union all
select nazwa, dataC from T
) as t
order by data

do 10 to już obetnij sobie jak jest na twoim SZBD, bo nie napisałeś jakiego używasz.

jeszcze dodam, że jeśli "data A" to rzeczywista nazwa kolumny to czas przerzucić się na szydełkowanie - Misiekd 2011-09-16 13:53

Pozostało 580 znaków

2011-09-16 13:51
0
select 
  nazwa, 
  data
from
  (select
    nazwa,
    data A as data
  union
  select
    nazwa,
    data B
  union
  select
    nazwa,
    data C) x
order by
  data

i dodaj sobie jeszcze limit bo oczywiście nie raczyłeś napisać co to za baza


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
edytowany 1x, ostatnio: Misiekd, 2011-09-16 13:51

Pozostało 580 znaków

2011-09-16 15:07
0

dziekuje dziala bardzo dobrze tylko mam jeszcze jeden maly delemat ktorego nie uwglednilem w pytaniu bo jeszcze chce znac pobrana kolumne:

2015 produkt 3 dataC
2011 produkt 3 dataA
2010 produkt 1 dataA
2009 produkt 2 dataC
2005 produkt 1 dataC
2004 produkt 2 dataB
2002 produkt 2 dataA
2001 produkt 1 dataB
2000 produkt 3 dataB

Pozostało 580 znaków

2011-09-16 15:09
0

jak zrozumiesz to zapytanie to sobie sam dopiszesz


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-09-16 15:22
0

rozumiem jest to ogólne zapytanie w połączonych tabelach

SELECT title, data, dataA, dataB FROM (
SELECT title, dataA AS data, id AS dataA FROM $artvicategory
union all
SELECT title, dataB AS data, id AS dataB FROM $artvicategory
) AS t 
ORDER BY data DESC;

myślałem nad czymś takim by dane przefiltrować pod kontem tego czy kolumna później ma jakiś ID i bym rozróżnił skąd data pochodzi

oczywiście jest to nie poprawne zastosowanie bo w pod zapytaniu pierwszym nie ma dataB a w pod zapytaniu drugim nie mam dataA

zastanawiam się czy wskazać w tych dwóch pod zapytaniach pustą kolumnę?

co do takiej struktury miałem pewne powody by to zrobić nie chciałem tworzyć kilku tablic a każdy z rekordów ma dość obszerne informacje dublować informacje nie było sensu a chciałem też by każdy id miał konkretny jeden przedmiot

edytowany 3x, ostatnio: mgs_saladin, 2011-09-16 15:26

Pozostało 580 znaków

2011-09-16 15:29
1

FACEPALM

SELECT title, data, dataA, dataB FROM (
SELECT title, dataA AS data, 'dataA' as dupa FROM $artvicategory
union all
SELECT title, dataB AS data, 'dataB' as dupa FROM $artvicategory
) AS t 
ORDER BY data DESC;

- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-09-16 15:54
0

a tak poważnie? bo nie widze innej drogi?

Misiekd napisał ci na serio tak to się robi. Tylko zrobił literówkę, powinno być: SELECT title, DATA, dupa FROM (... - massther 2011-09-16 16:04

Pozostało 580 znaków

2011-09-16 16:02
0

ale OCB?????? Przecież dałem ci zapytanie post wyżej....


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-09-16 16:22
0

aaaa juz rozumie :)

przepraszam myslalem ze 2x pobierana jest ta sama kolumna :) dziekuje bardzo za pomoc :)

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0