Sortowanie z wielu kolumn

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?

1

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.

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

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

0

jak zrozumiesz to zapytanie to sobie sam dopiszesz

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

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;
0

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

0

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

0

aaaa juz rozumie :)

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

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