[MySQL/PHP] Tables combinen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Reveal!
  • Registratie: November 1999
  • Laatst online: 08:36
Ik heb meerdere tables welke ik wil joinen.
Het probleem is alleen dat bij elk van deze tables niet alle velden ingevuld zijn.

Dus nu wil ik eigenlijk proberen ze te joinen als er meerdere velden overeenkomen.
(Als ik de table gebruik die eigenlijk zou moeten, dan matchen er maar 15.000 van de 32.000 resultaten)

Hoe doe ik zoiets ?

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:01
Dit heeft niets met DT&E te maken, maar met programmeren.

Hoe doe je het nu ? Door een inner join te maken op de velden, zou het toch moeten lukken ?

[ Voor 32% gewijzigd door whoami op 18-04-2006 10:51 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Reveal!
  • Registratie: November 1999
  • Laatst online: 08:36
whoami schreef op dinsdag 18 april 2006 @ 10:50:
Dit heeft niets met DT&E te maken, maar met programmeren.

Hoe doe je het nu ? Door een inner join te maken op de velden, zou het toch moeten lukken ?
Ja ik doe het nu met een Inner join op het hoofd veld....
Maar die andere velden moet hij alleen joinen als er meerdere velden overeenkomen en weet dus niet hoe ik dat doe....

(Denk bv. aan een schip met lengtes en breedtes etc.... dan kan ik niet joinen als alleen de lengte overeenkomt want dan bestaan er matches die niet kloppen.....)

[ Voor 17% gewijzigd door Reveal! op 18-04-2006 10:54 ]


Acties:
  • 0 Henk 'm!

  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 20-09 13:25
Heb je niet een voorbeeldstukje van je tabellen? DAt is volgens mij makkelijker.

Volgens mij kun je dit toch gewoon met twee joins en een 'AND' statement doen?

Edit:
Zoek je niet een IF statement?
http://dev.mysql.com/doc/refman/5.0/en/if-statement.html

[ Voor 27% gewijzigd door Redshark op 18-04-2006 10:54 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:01
Reveal! schreef op dinsdag 18 april 2006 @ 10:53:
[...]


Ja ik doe het nu met een Inner join op het hoofd veld....
Maar die andere velden moet hij alleen joinen als er meerdere velden overeenkomen en weet dus niet hoe ik dat doe....
Gewoon joinen op meerdere velden:
code:
1
2
...
INNER JOIN tabelB ON a.Veld1 = tabelB.Veld1 AND a.Veld2 = tabelB.Veld2..

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Reveal!
  • Registratie: November 1999
  • Laatst online: 08:36
Hmm ok en als ik bv een lengte van 1,5 heb en een van 1,49 maar die zijn wel hetzelfde ?
Is het ook mogelijk om hier een kleine range aan te geven ?

Dus bv. als het niet meer verscheelt dan 1m dan joinen ?

Acties:
  • 0 Henk 'm!

  • TweakBoy
  • Registratie: Augustus 2001
  • Laatst online: 14-09 22:16

TweakBoy

---

Reveal! schreef op dinsdag 18 april 2006 @ 10:57:
Hmm ok en als ik bv een lengte van 1,5 heb en een van 1,49 maar die zijn wel hetzelfde ?
Is het ook mogelijk om hier een kleine range aan te geven ?

Dus bv. als het niet meer verscheelt dan 1m dan joinen ?
veld_a between 1.5 and 1.6 ?

---


Acties:
  • 0 Henk 'm!

  • Reveal!
  • Registratie: November 1999
  • Laatst online: 08:36
TweakBoy schreef op dinsdag 18 april 2006 @ 10:58:
[...]

veld_a between 1.5 and 1.6 ?
INNER JOIN tabelB ON a.Veld1 = tabelB.Veld1 WHERE Veld1 BETWEEN Veld1+1 AND Veld1-1 ?

Da werk nie :'(

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Tja, nogal logisch> Wat doet die where in een expressie? En die AND? Je moet niet in spreektaal werken, maar in booleaanse logica. Wat wil je? veld1 met een range van 1?

(a.Veld1 - 1 > b.veld1 AND a.veld1 + 1 < b.veld 1)

lijkt me dan toch veel logischer.

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


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ehm, Janoz? :+
http://sqlcourse2.com/setoper.html :P

En Reveal!: met "Da werk nie" (wauw, er staat niet één Nederlands woord in die zin :o) kunnen wij niet veel. Wat werkt er niet aan? Krijg je een melding? Gaat er wat anders mis? Probeer eens wat duidelijker te zijn; wij kunnen van hieruit niet over je schouder meekijken wat er misgaat en waarom.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Och, het sloeg vooral op de where

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


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

:+

Om Reveal! niet helemaal raar op te laten kijken:
SQL:
1
2
3
SELECT iets
FROM tabelA INNER JOIN tabelB
  ON tabelA.Veld1 BETWEEN tabelB.Veld1 + 1 AND tabelB.Veld1 - 1

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Reveal!
  • Registratie: November 1999
  • Laatst online: 08:36
Ben hier al verder mee, nou heb ik nog een vraag ...
Ik heb tables gejoined waarvan columns verschillende namen hebben ... maar die moeten samengevoegd worden....
Kan ik hier union voor gebruiken of is hier wat anders voor ?

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Afhankelijk van wat je wil kun je dat bereiken door er een mysql functie op los te laten.
SUM (veld1, veld2) als je de som moet hebben
MAX (veld1, veld2) als je de grootste waarde moet hebben
COALESCE(veld1, veld2) als je de eerste non-NULL waarde wil hebben
...etc...

In de documentatie is daar meer over te vinden.

Regeren is vooruitschuiven

Pagina: 1