Toon posts:

[mysql] ik zie echt niet wat er fout gaat met m'n query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Als ik deze query doe:
code:
1
2
3
SELECT *
FROM tabeleen AS t1
WHERE t1.id = 272;

krijg ik resultaten terug (3 rows)

Als ik deze doe:
code:
1
2
3
SELECT *
FROM tabeltwee AS t2
WHERE t2.uid = 272;

krijg resultaten. (1 row)

Maar als ik deze doe:
code:
1
2
3
4
SELECT *
FROM tabeleen AS t1, tabeltwee AS t2
WHERE t1.id = 272
AND t2.uid = t1.id;

Dan krijg ik nop. Terwijl ik toch verwachte wel rows terug te krijgen

- Het * door t1.*, t2.* vervangen helpt niets
- De query met een join doen
code:
1
2
3
4
SELECT *
FROM tabeleen AS t1
LEFT JOIN tabeltwee AS t2 ON t1.id = t2.uid
WHERE t1.id = 272;

Maakt ook geen verschil (nog steeds nop)
- En als ik op een willekeurig nummer match ook niet (dus als ik WHERE t1.bedrijfsid = 272 weglaat)

Ik zal er wel te lang achter zitten.....
kan iemand me vertellen wat ik fout doe?

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
Als je je where weglaat, en je krijgt geen records terug dan ga ik er van uit dat er geen records zijn waarvoor t1.id = t2.uid.

https://fgheysels.github.io/


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
haal die AND eens weg, en kijk eens wat het resultaat is? (of er ook een t2.id met 272 tussen zit)

  • baggah
  • Registratie: December 2000
  • Laatst online: 28-08 22:47
En als je gewoon
code:
1
2
3
4
SELECT t1.id, t2.uid
FROM tabeleen AS t1
LEFT JOIN tabeltwee AS t2 ON t1.id = t2.uid
WHERE t1.id = 272;

doet? Werkt het dan wel?

Verwijderd

Topicstarter
whoami De eerste twee stukjes code tonen aan dat er voor 272 in allebei de tabellen waardes gevonden worden. Daarop zou ie dus zowiezo moeten kunnen matchen
Nielsz dat heb ik al getest met code stukje 2 (zie boven)

baggah dat werkt inderdaad wel....waar kan het dan aan liggen?

Verwijderd

Topicstarter
ik zie al dat het er aan ligt dat er in beide tabellen een kolom met dezelfde naam voorkomt
wat gek....dat zou toch geen probleem op moeten leveren?

Verwijderd

Ik denk dat dit het probleem is:
Bij een join probeer je verschillende tabellen samen te voegen, worden deze als het waren 'in elkaar geweven'. Dubbele kolomnamen kan dan wel degelijk een probleem zijn wanneer deze in beide tabllen voorkomen. Hij probeert ze dan 'over elkaar heen te zetten' waardoor de mysql server gaat stijgeren. Oftewel, zijn er kolommen in td1 met dezelfde naam als namen in kolommen in td2?

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Laat de 'AS' eens weg naast de tabelnaam

  • Just_a_Gamer
  • Registratie: November 2001
  • Laatst online: 31-08 07:04
Doe eens ipv van een left join ==> inner join. Ik denk dat dat het is. (Ik weet niet welke database je gebruikt )

BTW als je die as weghaalt geeft ie een error aan vanwege de t1 en t2 :P

Verwijderd

Topicstarter
Ik heb het opgelost door die ene kolom weg te halen, dan doet ie het wel. Ik zag dat die toch overbodig was (het is een database van iemand anders waar ik mee aan het klooien ben)
Pagina: 1