hallo ik heb een join waarbij ik de waardes die overeenkomen in tabel A en B worden opgehaald. Wat ik nu wil is dat de waardes uit tabel A worden opgehaald min de waardes (die overeen komen) die al vermeld zijn in tabel B

dus in tabel A staat
id 1,2,3,4,5

en tabel B staat
id 1,4

de uitkomst moet dan 2,3,5 zijn

Kan iemand mij vertellen hoe ik dit het beste kan aanpakken?

dit is de code die ik nu heb.

<?php
//gegevens uit tabel weergeven in drop down menu



$query_werknemer="SELECT * FROM werknemers INNER JOIN werknemers_in_gebruik ON werknemers.msg_werknemers_id = werknemers_in_gebruik.msg_werknemers_id ";

$result_werknemer = mysql_query($query_werknemer) or die(mysql_error());

while( $data = mysql_fetch_array($result_werknemer))

{
echo '<input name="msg_werknemer[]" type="checkbox" value="'.$data['msg_werknemers_id'].'<br>">';
echo "".(stripslashes ($data['msg_v_naam']))." ";
echo "".(stripslashes ($data['msg_a_naam']))."<br>";
}

?>
Ik heb nog steeds het probleem niet op kunnen lossen. Ik zal nog even voor de duidelijkheid uitleggen wat ik wil berijken

tabel: werknemers

id | naam
---+-------
1 | peter
2 | jaap
3 | karel
4 | joop
5 | pieter

tabel: werknemers_in_gebruik

int_id| id
------+---
40 | 3
22 | 1
22 | 3
22 | 4
30 | 4
30 | 5

Elke pagina in mijn website krijgt een int_id mee waarmee bepaald word welke content hij op moet halen.

De uitkomst voor pagina met int_id 30 is

peter
jaap
karel

Ik heb al diverse manieren uit geprobeerd

1) hierbij worden alle namen weergegeven totdat er de id nr 1 in de tabel werknemers_in_gebruik staat vermeld. Op dat moment wordt er namelijkhelemaal niks meer weergegeven.
<?

$query_werknemer="SELECT *
FROM werknemers
WHERE NOT EXISTS (SELECT *
FROM werknemers_in_gebruik
WHERE msg_werknemers_id=1 AND msg_int_id = 5)";


?>



2) Hierbij wordt helemaal niks weergegeven
<?
$query_werknemer="SELECT werknemers.*
FROM werknemers
LEFT JOIN werknemers_in_gebruik
ON werknemers.msg_werknemers_id=werknemers_in_gebruik.msg_werknemers_id
WHERE
werknemers_in_gebruik.msg_werknemers_id IS NULL AND werknemers_in_gebruik.msg_int_id= 5 ";
?>


3) geeft ook niks weer
<?
$query_werknemer="SELECT DISTINCT msg_v_naam
FROM werknemers
RIGHT JOIN werknemers_in_gebruik ON werknemers.msg_werknemers_id=werknemers_in_gebruik.msg_werknemers_id AND werknemers_in_gebruik.msg_int_id <> 30";
?>

is het niet mognelijk om eerst alle waarde op te halen en dan de waarde die al in tabel werkenmers_in_gebruik af te trekken van de uikomst?


Ik hoop dat iemand hier nu een oplossing voor me heeft, of een goed script weet. Ik kom er namelijk echt niet meer uit
Zoiets?

<?php
$query = "
SELECT
naam
FROM
werknemers
WHERE
id <> (
SELECT
id
FROM
werknemers_in_gebruik
WHERE
int_id = ".$uitkomst_pagina."
)
"
?>

edit:
() ipv {} --> foutje ;P
SELECT iets FROM werknemers_in_gebruik WHERE (SELECT id FROM tabel) IS NOT IN werknemers_in_gebruik.

Zoiets, ik weet hem niet precies, maar ik denk dat iemand anders hem wel even goed kan maken.
Ik heb de code van Kalle geprobeerd
<?
$query_werknemer="SELECT *
FROM
werknemers
WHERE
msg_werknemers_id <> {
SELECT
msg_werknemers_id
FROM
werknemers_in_gebruik
WHERE
msg_int_id = 5
}";
?>

krijg ik de error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT msg_werknemers_id FROM werknemers_in_g' at line 6

Welke versie van MySQL heb je? Ondersteunt deze wel sub-queries?
ik gebruik
phpMyAdmin 2.6.2-pl1
MySQL 4.1.14-standard

<?
$query_werknemer="
SELECT
jouwding1, jouwding
FROM
werknemers
WHERE
msg_werknemers_id
NOT IN(
SELECT
msg_werknemers_id
FROM
werknemers_in_gebruik
WHERE
msg_int_id = 5
)";
?>

zo zou het moeten werken volgen smij
Ja nu geeft hij weer alle namen uit tabel werknemers weer. Ookal zijn ze in de andere tabel ook aanwezig.
Dit werkt bij mij wel:

SELECT * 
FROM test1 
WHERE naam NOT IN ( 
    SELECT naam FROM test2);

Reageren