Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[SQL] Data dubbel weergeven

Pagina: 1
Acties:

  • storeman
  • Registratie: April 2004
  • Laatst online: 00:34
Ik heb een mooi SQL vraagstuk.

Ik heb een tabel waar trajecten in staan, laten we traject A>B nemen. Dit traject staat in de database, maar gaat ook in omgekeerde richting gebruikt worden, dus van B>A, nu wil ik een lijst maken die alle trajecten weergeeft, dus zowel A>B als B>A, hierbij wil ik graag kunnen sorteren op bijvoorbeeld begin of eindplaats.

Is het mogelijk om MySQL een dataset te laten creeeren zodat alle rijen in feite dubbel worden opgehaald?

"Chaos kan niet uit de hand lopen"


  • Morax
  • Registratie: Mei 2002
  • Laatst online: 16:27
Waarom loop je niet gewoon 2 keer door je resultset heen, waarbij je de tweede keer $begin =
$eind en $eind = $begin doet ?

What do you mean I have no life? I am a gamer, I got millions!


  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 28-11 18:54
Kan dat niet met een simpele OR ?
En een order by?

Select *
From traject
Where (Start = 'A' or end = 'A')
And (Start = 'B' or end = 'B' )
Order by Start

let the past be the past.


  • storeman
  • Registratie: April 2004
  • Laatst online: 00:34
@Morax

Dat is een optie, maar dan is sorteren weer lastiger, dan zou ik eerst twee resultsets moeten maken en deze vervolgens samenvoegen, en dan sorteren, dat moet voor mijn gevoel makkelijker kunnen.

@SPee
Nu krijg je één resultaat, dat is niet zo'n probleem. Het gaat mij juist om alle records uit de tabel.


Gevoelsmatig denk ik ook niet dat het mogelijk is, maar mijn kennis strekt ook niet zo ver dat ik puur op mijn gevoel af druf te gaan. Misschien moet er een vieze methode met subquery's worden toegepast?

"Chaos kan niet uit de hand lopen"


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Wat heb je in de dbase staan??? Is dit echt traject A>B of is dit afstand tussen (A en C) en (C en B) en bereken je dit dan?

In geval van optie 2 moet het namelijk zo om te draaien zijn.

  • Qoning
  • Registratie: September 2007
  • Laatst online: 24-11 20:39
storeman schreef op donderdag 01 november 2007 @ 23:33:
@Morax

Dat is een optie, maar dan is sorteren weer lastiger, dan zou ik eerst twee resultsets moeten maken en deze vervolgens samenvoegen, en dan sorteren, dat moet voor mijn gevoel makkelijker kunnen.
UNION
@SPee
Nu krijg je één resultaat, dat is niet zo'n probleem. Het gaat mij juist om alle records uit de tabel.


Gevoelsmatig denk ik ook niet dat het mogelijk is, maar mijn kennis strekt ook niet zo ver dat ik puur op mijn gevoel af druf te gaan. Misschien moet er een vieze methode met subquery's worden toegepast?

Verwijderd

Tabel Traject:
BeginEind
AB
BC
AD


Via Sql:

SELECT Begin, Eind FROM Traject
UNION ALL
SELECT Eind, Begin FROM Traject

Dan moet je krijgen:
AB
BC
AD
BA
CB
DA

  • storeman
  • Registratie: April 2004
  • Laatst online: 00:34
Heel mooi Debbus, hier was ik dus naar opzoek. zelfs het sorteren en limit werken allemaal :).

Ik begrijp nog niet precies wat union all nu doet (voegt hij de kolommen samen van subquery 1 en 2, in dezelfde volgorde?

Sorteren werkt alleen helemaal achteraan de query.

iig, bedankt, deze zal ik zeker onthouden.

"Chaos kan niet uit de hand lopen"


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Union is setterminologie, de term voor het samenvoegen van 2 sets.
Sorteren werkt alleen helemaal achteraan de query.
Nee, je kan dmv haakjes binnen de afzonderlijke delen order by/limit clauses toevoegen, resp. deze clauses op de comlete resultset toepassen.

Extra graties performance tip: Als je met limit werkt, deze limit ook binnen de geneste queries herhalen indien mogelijk, zodat het aantal rijen zo snel mogelijk beperkt wordt.

{signature}

Pagina: 1