2010-06-21 3 views
0

J'ai 3 tables:Comment sélectionner uniquement les lignes qui n'ont pas de clé étrangère correspondante dans une autre table de MySQL?

  • annonce
  • photo
  • calendrier

"photo" et "calendrier" les deux ont un "listing_id" colonne en eux et chaque "liste" a une photo". Mais je veux seulement sélectionner les lignes qui n'ont pas d'entrée dans la table "calendrier" avec la correspondance "listing_id".

Je ne sais pas si je le dis correctement, mais toute aide serait grandement appréciée. Et si quelqu'un pouvait me montrer la syntaxe de CodeIgniter, ce serait encore mieux.

+0

Attendez ... laissez-moi clarifier. "calendar" a une colonne "free_date" et je veux être en mesure de spécifier "free_date" qui ne devrait pas être retourné. – Shamoon

Répondre

2

Cela produira la liste des valeurs calendar.free_date qui ne devraient pas être renvoyés parce que leurs valeurs listing_id associées n'existent pas dans la table d'inscription.

select free_date from calendar c 
where not exists (select * from listing 
        where listing_id = c.listing_id); 
0

Devrait fonctionner comme une requête SQL. Pas sûr de la syntaxe CI. Pardon!

SELECT * FROM liste OÙ listing_id PAS (SELECT listing_id DE calendrier)

+0

Je ne peux pas répondre directement à votre commentaire, mais je ne vois pas vraiment où entrent les données de free_dates. Cherchez-vous des résultats de la table "calendar" sur ce qui est là, ou ce qui n'y est pas? –

Questions connexes