Toon posts:

[mysql] join werkt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil gegevens uit 2 tabellen gebruik voor mijn query

Tabel Trefwoorden:(trefwoord(String), trefIndex(int))
Tabel BoekTrefwoorden:(trefIndex(int), boekIndex(int))

Nu wil ik een query die alle trefwoorden geeft welke nog niet door een specifieke boekindex zijn gebruikt.

Geeft een Syntax fout(paar maanden oude versie van mysql):
SELECT Trefwoord FROM trefwoord WHERE TrefwoordIndex IN (SELECT TrefwoordIndex FROM trefwoord WHERE TrefwoordIndex = 2)
En dit levert een fout resultaat(zoals te verwachten hoor):
SELECT t.Trefwoord, t.TrefwoordIndex FROM trefwoord t, boektrefwoord b WHERE t.TrefwoordIndex = b.TrefwoordIndex AND b.BoekIndex != 2
Weet iemand wat?

  • bat266
  • Registratie: Februari 2004
  • Laatst online: 19-05 19:47
weet je wel zeker dat het niet t.TrefwoordIndex == b.TrefwoordIndex moet zijn

Better to remain silent and be thought a fool then to speak out and remove all doubt.


Verwijderd

Topicstarter
weet je wel zeker dat het niet t.TrefwoordIndex == b.TrefwoordIndex moet zijn
Ja, het is sql, geen programmeer taal (voor de zekerheid nog even getest, maar geeft een syntax fout hoor)

  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 19-05 21:22
Je tabel heet toch trefwoordEN????

Whatever


Verwijderd

Topicstarter
Jajaja:-), let maar niet op de kleine typfoutjes:-)

  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 19-05 21:22
Je 1e query omgebouwd (sorry, ik kan niet zien wat tikfoutjes zijn of ECHTE fouten :) )


SELECT Trefwoord FROM trefwoorden WHERE TrefIndex NOT IN (SELECT TrefIndex FROM boektrefwoorden WHERE boekIndex = 2)

Zoiets....

Tenzij je MySQL versie nog geen subqueries ondersteunt....

Whatever


  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07-2025
Zoiets moet het zijn geloof ik:

mysql < 4.1
SQL:
1
2
3
4
5
SELECT 
    t.Trefwoord, 
    t.TrefwoordIndex 
FROM trefwoord t LEFT JOIN boektrefwoord b ON ( t.TrefwoordIndex = b.TrefwoordIndex AND b.BoekIndex = 2)
WHERE b.BoekIndex is null;

of

mysql >= 4.1
SQL:
1
2
3
4
5
6
7
8
9
10
SELECT
    t.Trefwoord, 
    t.TrefwoordIndex 
FROM trefwoord t
WHERE t.TrefwoordIndex NOT IN (
        SELECT DISTINCT b.TrefwoordIndex
        FROM boektrefwoord b
        WHERE b.TrefwoordIndex = t.TrefwoordIndex
            AND b.BoekIndex = 2
     )

[ Voor 6% gewijzigd door pjotrk op 13-11-2004 14:01 ]


  • GambitRS
  • Registratie: Juni 2001
  • Laatst online: 13-06-2013

GambitRS

w00t

Verwijderd schreef op zaterdag 13 november 2004 @ 13:15:
SELECT Trefwoord FROM trefwoord WHERE TrefwoordIndex IN (SELECT TrefwoordIndex FROM trefwoord WHERE TrefwoordIndex = 2)
Wat dacht je van:
SELECT Trefwoord FROM trefwoord WHERE TrefwoordIndex = 2;

MechWarrior || Monsters Game


  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 19-05 21:22
Dat zou je haast denken ja, als je de query bekijkt. Maar uit zijn verhaal blijkt dat hij toch echt ook de tweede tabel erbij wil betrekken :)

Whatever


Verwijderd

Topicstarter
Nou die laatste is alleen maar om te laten zien dat hier sql een syntax error gebruikt. Ik heb net sql maar eens naar 4.1 geupdate 8)7 ja eindelijk
maar nu kan ik niet meer in mijn oude tabellen bekijken

Het doel is of alle trefwoorden te bekijken die niet "bezet" zijn door een bepaalde boekindex
Pagina: 1