Aller au contenu

select quand il n'y a pas de lien


djp1988

Sujets conseillés

J'ai ces tables:

id | nom

1 | daniel

2 | mike

3 | dan

et un autre:

id_2 | ref

1 | 1

2 | 1

3 | 3

4 | 1

j'aimeri un sql pour m'afficher les noms du premier tableau de ceux qui n'apparaisent pas dans la deuxieme tableau en reference, c'est a dire:

'mike'

Lien vers le commentaire
Partager sur d’autres sites

Merci, vous savez quand c'est sous mon nez ca a l'air tres simple (pas pour join) mais il faut vraiment que je me creuse la tete pour me familiarisé avec join et d'autres techniques plus avancés en sql.

Vous voulez rigolez? Voici comment je traitez mon probleme avant d'avoir votre réponse:

	$sql = 'SELECT * FROM t1';
$result = mysql_query ($sql, $dbc);
$total1=@mysql_num_rows($result);
$sql = 'SELECT *
FROM t1, t2
WHERE t1.id = t2.ref
GROUP BY ref';
$result = mysql_query ($sql, $dbc);
$total2=@mysql_num_rows($result);

if($total1 == $total2){
echo 'Tous sont representees';
}else{
$sql = 'SELECT * FROM t1';
$result = mysql_query ($sql, $dbc);

echo '<ul>';
while($row = mysql_fetch_array ($result, MYSQL_BOTH)){
$ref = $row['id'];
$sql3 = "SELECT *
FROM t1, t2
WHERE t1.id = t2.ref
AND ref = $ref";
$result3 = mysql_query ($sql3, $dbc);
$total3=@mysql_num_rows($result3);
if($total3 == 0){ // pas dans la t2
$sql4 = "SELECT * FROM t1 WHERE id = $ref";
$result4 = mysql_query ($sql4, $dbc);
$row4 = mysql_fetch_array ($result4, MYSQL_BOTH);
$nom = $row4['nom'];
echo '<li>'.$nom.'</li>';
}
}
echo '</ul>';
}

Donc 2 sql pour comparer si tous les noms sont representees, si c'est pas le cas, on sql pour tous les noms, et dans une boucle on verifie si le sql cherhant un lien entre les 2 tables renvoie un ou plusieurs lignes en resultat, si elle renvoie rien, c-a-d que ce nom n'a pas de ref dans la t2, alors on REfais un sql avec la 'id' de celui ci dans la t1 pour recuperer leur nom pour l'afficher dans une liste..... ouf.... ou alors, on fais :

SELECT nom FROM t1 WHERE id NOT IN (SELECT DISTINCT ref FROM t2)

MERCI BEAUCOUP

Modifié par djp1988
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...