1

Voila deux tables :

Titre(id, Film_id, titre, langue);
Film(id, Réalisteur, Producteur);

Je voudrais avoir tous les identifiants de Film.id qui n'ont pas de titre,
en fait l'inverse de la jointure sur la table Titre sur Film.id = Titre.id .

J'arrive a le faire en plusieurs requetes mais pas en une.

Réponse en plusieurs requetes :

$tab_res = array()
$db->query("Select id From Film")
while ($db->nextRecrod())
{
  $db->query("Select id From Titre WHERE Film_id=". $id .");
  if (!$db->numRows()) // On a des résultats
  {
    // Voila un résultat
    array_push($tab_res, $id); 
  }
}


Pour info : moi je veux juste la requete, si je trouve je poste la réponse.
avatar
;)

2

Mouef simple :
SELECT Film.id FROM Film JOIN Titre WHERE Film.id = Titre.Film_id AND titre = '';

C'est faisable d'autres façons aussi :
SELECT Film.id FROM Film WHERE id IN (SELECT Film_id FROM Titre WHERE Titre.titre = '');

Par exemple...

Enfin, si j'ai bein compris ton probleme..
Mon site perso : http://www.xwing.info

3

C'était pas de moi en fait, mais il te remercie.

Non en fait c presque ca ?

Le seul truc c'est qu'il n'y a pas d'entrée(tuple) dans la table Titre.

Exemple :

Table Film
1 "Coppola" "Joel Silver"
2 "Shyamalan" "Lars Von Trier"

Table Titre
1 1 "Dracula" "Francais"
2 1 "Dracule" "Hongrois"
Et pas d'entrée pour le film de Shyamalan.

Donc je pense que ce n'est pas possible avec Titre=''.

La réponse avec ces deux tables est 2 car le tuple no 2 de la table Film n'a pas de titre.

Merci pour la future réponse.
avatar
;)

4

SELECT Film.id FROM Film WHERE id IN (SELECT Film_id FROM Titre WHERE Titre.titre = '') OR id NOT IN (SELECT Film_id FROM Titre);
devrait faire l'affaire alors

Mais c ptet un peu lourd. La comme ça, j'ai pas d'idée plus optimisée en tete.
Mon site perso : http://www.xwing.info

5

Merci pour la requete,

Elle marche bien sur mais je n'ai pas le droit aux requêtes imbriquées... ^^
Mais je me suis débrouillé en faisant la requête imbriquée puis l'autre.

(Theo)
avatar
;)