[mysql] sorteren op datum uit 2 tabellen

Pagina: 1
Acties:
  • 258 views sinds 30-01-2008
  • Reageer

  • Toni
  • Registratie: Februari 2001
  • Niet online
Ik zit met een klein mysql probleem. Ik wil graag op de voorpagina van een website headlines laten weergeven die zijn gesorteerd op datum.

Nu heb ik 2 soorten headlines, die ik uit 2 verschillende tabellen trek, namelijk news en weblog. In allebei de tabellen staat een date_time veld en wat ik nu graag zou willen is met 1 mysql_query de headlines laten sorteren op datum. Ik ben vrij lang met joins aan het pielen geweest, maar het lukt me niet om mysql de datums uit beide tabellen met elkaar te laten vergelijken en daar dan vervolgens op de sorteren. Nu zou ik graag willen weten of dat wel mogelijk is?

Ik heb nu een soort workaround gemaakt waarbij ik 2 query's doe (1 voor news en 1 voor weblog) en vervolgens met een if statement de datums met elkaar vergelijk. Dat werkt prima, maar het zou zo maar kunnen zijn, dat er nog een ander type headline uit weer een andere tabel bij komt en daarom zou ik graag willen weten of zoiets met 1 kundig sql-query kan en of dat dan ook "the way" is.

We need more cowbell


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Welke versie van MySQL gebruik je?

Who is John Galt?


  • Toni
  • Registratie: Februari 2001
  • Niet online
ik gebruik mysql 3.23

We need more cowbell


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:31

Dido

heforshe

Kun je geen UNION gebruiken? Als je met 1 losse query werkt gaat het nooit lukken omdat je datums per definitie in twee verschillende kolommen staan.

Iets als dit?
code:
1
2
3
4
SELECT headline, datum FROM tabel1
UNION ALL
SELECT headline, datum FROM tabel2
ORDER BY 2

Wat betekent mijn avatar?


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

3.23 ondersteund geen unions, maar misschien heb je iets aan de volgende link:
Writing Unions in MySQl 3.x :)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • Toni
  • Registratie: Februari 2001
  • Niet online
ik heb de mysql 3.x union workaround (DeverauX bedankt voor de link) geprobeerd, maar ik krijg dan bij mijn eerste testje in php een Call to undefined function: () voor mijn kiezen. Ik gebruik het onderstaande select en heb keurig een _dummy tabel met 2 records gemaakt.

$sql ='SELECT IFNULL(news.id, weblog.id) AS id FR.num = 0) LEFT JOIN weblog ON (D.num = 1) WHERE D.num < 2 AND IFNULL(news.id,weblog.id) IS NOT NULL ORDER BY id';

$result = $mysql_query($sql);

Iemand een idee wat die undefined function is?

Oplossing voor mijn probleem is waarschijnlijk een upgrade naar mysql 4.x, zodat ik gewoon UNION kan gebruiken. Nu heb ik daar nu even geen trek in en hou ik het denk ik bij mijn eerste minder elegante oplossing, tenzij iemand begrijpt wat dus die call naar undefined function veroorzaakt. Ligt dat misschien aan IFNULL? Ik heb geprobeerd te achterhalen vanaf welke versie dat wordt ondersteunt, maar kon het zo snel niet vinden.

We need more cowbell


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Dat is gewoon een syntax probleem, je haakjes kloppen iig. niet.

Who is John Galt?


  • Toni
  • Registratie: Februari 2001
  • Niet online
Oeps! dit was ook de verkeerde code. Dit heb ik echt staan en levert dus de warning op:

$sql = 'SELECT IFNULL(news.news_id, weblog.weblog_id) AS id
FROM _dummy AS D
LEFT JOIN news ON (D.num = 0)
LEFT JOIN weblog ON (D.num = 1)
WHERE D.num < 2 AND IFNULL(news.news_id,weblog.weblog_id) IS NOT NULL
ORDER BY id';

Voorbeeld is vrijwel letterlijk overgenomen van de tutorial pag en volgens mij staan de haken goed.

We need more cowbell

Pagina: 1