[MySQL] ORDER BY probleempje

Pagina: 1
Acties:

  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Ik heb een query waarin ik dingen uit verschillende tabellen select. In deze verschillende tabellen staat allemaal een kolom datum. Ik wil alles wat ik select sorteren op datum. Maar hoe kan ik de data uit de verschillende tabellen zeg maar als 1 laten zijn in de order by. Of is hier een andere oplossing voor? Ik zit vast, en kom er niet uit :'(

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


Verwijderd

Post je query anders even hier. Heb je een Union (samenvoegquery) query gemaakt?

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Ik denk dat je op zoek bent naar de UNION-operator.

Grr: Te laat

Never underestimate the power of


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
SELECT spelkubus.ID, spelkubus.titel, spelkubus.datum, spelkubus.inleiding, spelkubusedit.ID, spelkubusedit.titel, spelkubusedit.datum, spelkubusedit.inleiding FROM spelkubus, spelkubusedit ORDER BY datum DESC LIMIT 5

Dit is de query zeg maar (beetje ingekort). Het ORDER BY datum moet dus die kolommen sorteren op datum. Maar dan moet ie eerst alle data uit die kolommen plukken of zo :?

[ Voor 0% gewijzigd door Captain N op 04-09-2002 14:37 . Reden: De code tag was niet zo goed voor de layout ;) ]

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Zo werkt het natuurlijk niet :) .. Op dit moment gaat ie de gegevens uit de 2 tabellen niet onder elkaar zetten, maar met elkaar combineren. Daardoor weet sql niet welke datum je nu bedoeld omdat er 2 kolomen zijn met de naam datum.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Ja... zover kom ik! :D Maar dat is juist het probleem. Hoe maak ik het hem dat duidelijk :)

* Is zich nog wat meer aan het verdiepen in Unions

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Je krijgt dan ongeveer zoiets:

code:
1
2
3
4
5
6
SELECT spelkubus.ID, spelkubus.titel, spelkubus.datum, spelkubus.inleiding
FROM spelkubus
UNION
SELECT spelkubusedit.ID, spelkubusedit.titel, spelkubusedit.datum, spelkubusedit.inleiding
FROM spelkubusedit
ORDER BY datum DESC


Ik niet hoe het dan vervolgens met de LIMIT moet, maar daar kom je vast zelf wel uit.

Never underestimate the power of


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Maar zo weet ie toch nog niet welke datum die moet pakken?

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Er worden twee resultaten samengevoegd tot één. Hier zit dus ook maar één datum veld in.

Never underestimate the power of


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
You have an error in your SQL syntax near 'UNION SELECT spelkubusedit.ID, spelkubusedit.titel, spelkubusedit.datum, spelku' at line 3 :'(

edit: Hmmm.. ik zie dat Unions vanaf versie 4.0.0 beschikbaar zijn, en mijn host draait 3 nogwat. :( Is er een andere manier om hetzelfde te bereiken?

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Ik ben geen MySQL expert, maar als die versie al geen UNION kent, vrees ik het ergste.

Never underestimate the power of


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
UNION is tot heden het enige dat ik tegen gekomen ben dat niet werkt :?

Er zal toch wel een alternatief zijn?

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Een temporary tabel maken.
De 1ste query uitvoeren en alle resultaten in die temp table gooien.
De 2de query uitvoeren en ook alle resultaten in die tmp table gooien.

alle records uit die temp table halen en sorteren op datum.

https://fgheysels.github.io/


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Dat klinkt nogal tijdverslindend :| Is er niet een snellere manier :?

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Ik denk niet dat het zoveel meer tijdverslindend zal zijn dan de union manier....

code:
1
2
3
4
5
6
7
INSERT INTO tmpTable ( velden)
SELECT  * FROM table1

INSERT INTO tmpTable (velden)
SELECT * FROM table2

SELECT * FROM tmpTable ORDER BY ...


Normaal gezien moet dat als een trein lopen.

https://fgheysels.github.io/


Verwijderd

www.Goku.nl schreef op 04 september 2002 @ 16:30:
Dat klinkt nogal tijdverslindend :| Is er niet een snellere manier :?
Ja, MySQL 4 installeren :+

Nee zonder gein. Ben bang dat dat niet gaat lukken. Temp tabel is imo de enige oplossing.

  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Zal m'n host eens vragen dan of ze 4 kunnen installen dan :'(

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


Verwijderd

code:
1
ORDER BY spelkubus.datum, anderetabel.datum, nogiets.datum

ipv
code:
1
ORDER BY datum

zou je conflict op moeten lossen... :)
Zo doet-ie namelijk sorteren op spelkubus.datum en daarna op anderetabel.datum, etc.
Het wordt dan wel niet 1 veld, maar wel fijn gesort...
of wil je dattie het gemiddelde neemt?

  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
whoami schreef op 04 september 2002 @ 16:34:
Ik denk niet dat het zoveel meer tijdverslindend zal zijn dan de union manier....

code:
1
2
3
4
5
6
7
INSERT INTO tmpTable ( velden)
SELECT  * FROM table1

INSERT INTO tmpTable (velden)
SELECT * FROM table2

SELECT * FROM tmpTable ORDER BY ...


Normaal gezien moet dat als een trein lopen.
Wanneer delete je de table weer dan? Nadat je de select in een aray hebt gepropt?

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
whoami schreef op 04 september 2002 @ 16:27:
Een temporary tabel maken.
De 1ste query uitvoeren en alle resultaten in die temp table gooien.
De 2de query uitvoeren en ook alle resultaten in die tmp table gooien.

alle records uit die temp table halen en sorteren op datum.
Hopelijk hoeft het geheel niet multi-user te zijn, want dan gaat dit grapje een beetje ingewikkelder worden. En vergeet ook niet om je records na afloop weer te verwijderen.

Never underestimate the power of


Verwijderd

Verwijderd schreef op 04 september 2002 @ 16:39:
code:
1
ORDER BY spelkubus.datum

ipv
code:
1
ORDER BY datum

zou je conflict op moeten lossen... :)
Nope, want ook op hij moet niet alleen op spelkubus.datum sorteren, maar op alle data.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
cameodski schreef op 04 september 2002 @ 16:40:
[...]

Hopelijk hoeft het geheel niet multi-user te zijn, want dan gaat dit grapje een beetje ingewikkelder worden. En vergeet ook niet om je records na afloop weer te verwijderen.


Ik geloof dat dat geen probleem hoeft te geven. Ik dacht dat het DBMS er wel voor zorgt dat er voor iedere sessie een aparte tmp table wordt aangemaakt?

De tmp table drop je weer wanneer je die niet meer nodig hebt.

https://fgheysels.github.io/


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Verwijderd schreef op 04 september 2002 @ 16:39:
code:
1
ORDER BY spelkubus.datum

ipv
code:
1
ORDER BY datum

zou je conflict op moeten lossen... :)
Maar in spelkubusedit zit ook een kolom datum, en die moet ie dus meepikken ;)

Damn... DaJan was me voor :P

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


Verwijderd

cameodski schreef op 04 september 2002 @ 16:40:
[...]

Hopelijk hoeft het geheel niet multi-user te zijn, want dan gaat dit grapje een beetje ingewikkelder worden. En vergeet ook niet om je records na afloop weer te verwijderen.
Je zou een soort van procedure kunnen schrijven die eerst alle records in de temp-tabel wist en dan pas de nieuwe invoegt. Hoef je ook niet bang te zijn dat dat na afloop niet gebeurt.

  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Dus ik heb een temp tabel. En telkens moet ik dan de waarden erin deleten, en niet de hele tabel right?

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


Verwijderd

Begrijp ik nu goed dattie die 2 datum-kolommen moet samenvoegen?

  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Ja.

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
www.Goku.nl schreef op 04 september 2002 @ 16:46:
Dus ik heb een temp tabel. En telkens moet ik dan de waarden erin deleten, en niet de hele tabel right?
whoami heeft inderdaad gelijk. Temp tables zijn sessie afhankelijk en kunnen na afloop gewoon weer gedropt worden.

Ik wil alleen graag nog wel even uitleggen waarom ik mij vergiste.
Het lijkt erop dat je in deze situatie na verloop van tijd veel data in je tabellen gaat krijgen. Als je vervolgens steeds alles in de temp table moet inserten, gaat dat dus veel tijd kosten. Ik zat dus meer aan een permanente tabel te denken, waar je dan gelijk ook het een en ander met indexen kunt doen.

Never underestimate the power of


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Ik gebruik geen sessies, het is gewoon een "Nieuwe Updates" script. Ik heb verschillende onderdelen, zoals Previews, Reviews, Editorials, etc. Deze zitten in verschillende tabellen omdat ze allemaal verschillende dingen bevatten. Wel bevatten ze dus allemaal een ID, titel, en inleiding... en dus die datum.

Ik heb zelf ook al wat zitten denken aan een permanente tabel, maar ik ben er nog niet helemaal achter hoe ik hem dan zou kunnen indelen/linken :? Ideeen?

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Foutje :)

Je hebt in ieder geval een index op datum nodig en verder kun je erin mikken wat je wilt.

Never underestimate the power of


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
IPnummer??? Uh, waarom een IPnummer :? :?

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


Verwijderd

voer 2 losse queries uit gesorteerd op datum per tabel
en voeg ze samen met php (ik neem aan dat je dit gebruikt)
das zonder twijfel de beste manier

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Verwijderd schreef op 04 september 2002 @ 17:54:
voer 2 losse queries uit gesorteerd op datum per tabel
en voeg ze samen met php (ik neem aan dat je dit gebruikt)
das zonder twijfel de beste manier
En waarom dan wel?
Je haalt eerst onnodig veel records op en gaat vervolgens de boel op een of andere manier slechts een gedeelte weer samenvoegen. Lijkt me niet echt superhandig.

Never underestimate the power of


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
cameodski schreef op 04 september 2002 @ 17:14:
Foutje :)

Je hebt in ieder geval een index op datum nodig en verder kun je erin mikken wat je wilt.
Ja, maar er kunnen dus ook meerdere dingen dezelfde datum toegevoegd worden. En hoe kan ik makkelijk de ID (???) in die kolom koppelen aan een kolom in de overige tabellen? Wil niet iedere keer gaan kijken wat het hoogste nummer in die andere kolom is, en dan een nieuwe waarde invullen zeg maar...

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Hoho :)
Nu begin je het een beetje ingewikkelder te maken.
Hoe zit het precies met dat hoogste nummer? Ik volg je daar even niet meer.

Never underestimate the power of


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
^_^

Nou kijk, je maakt dus een tabel aan waarin je die datum zet. En ik heb om het ff simpel te houden 2 andere tabellen. Ik noem ze ff nieuws en reviews. Stel ik voeg een nieuws item toe. Die geeft ik in een kolom datum ID een id van 1. In de datum tabel maak ik een rij aan met 1 als id en gewoon de datum. Maar als ik dan daarna een review wil uploaden moet ik daar de datumid 2 aangeven. ... En dan nog het gedoe als je 2 dingen op 1 dag upload :?

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Sorry, ik volg je echt niet meer. Kun je anders eens uitleggen wat je precies wilt zien, misschien dat ik hem dan volg.

Never underestimate the power of


  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
:P Ik heb dus verschillende tabellen met overal een kolom datum erin. Ik wil uit het alle tabellen bij elkaar de laatste .. uhm... zeg 10 gegevens laden (op datum dus). Nu zeg jij: maak een nieuwe tabel, en indexeer daarin de data ... maar hoe? ^_^ Ik kom allerlei problemen tegen zoals 2 rijen die de zelfde datum bevatten, en zo... (zie die andere posts).

Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

create temporary table blaat (dinges integer, ietsnaders date);
insert into blaat SELECT iets, anders FROM tabel1;
insert into blaat SELECT iets, anders FROM tabel2;
insert into blaat SELECT iets, anders FROM tabel3;
insert into blaat SELECT iets, anders FROM tabel4;
insert into blaat SELECT iets, anders FROM tabel5;
SELECT * from blaat ORDER BY ietsnaders LIMIT 10;

Veel plezier met temporary tables :)
Pagina: 1