2009-04-01 4 views
0

J'apprends PHP et MySQL pour obtenir des scripts côté serveur et pour mon intérêt personnel/développement. Le premier «programme», au-delà de «hello world» semble écrire son propre blog.Comment prévenir, contrer ou compenser, un champ vide/NULL (MySQL) retournant un ensemble vide

Ceci est un peu au-delà de moi pour le moment et je pensais que je commencerais par un type de base de données contacts. Jusqu'à présent, tout va bien, mais (et il y a toujours le but!) J'essaye de formater une présentation sous la forme que le nom du contact est formaté comme un mailto: lien.

Ceci est bien jusqu'à ce que j'ose entrer un contact qui n'a pas d'adresse e-mail dans le Db, à quel point le manque évident d'un email.contactID pour égaler la contacts.contactID élève sa tête.

Je me rends compte que je devrais être capable de faire face à cela mais ... je ne peux pas penser à comment (yay à l'insomnie! @. @). Toute suggestion serait appréciée.

Répondre

2

Vous souhaitez une jointure gauche (ou gauche extérieure).

select concat(c.fname, ' ', c.sname) as name, e.address as email 
from contacts c 
left join emails e 
on (c.contactID = e.contactID) 
+0

Merci! Je suppose que c'est facile quand tu sais comment? Très appréciée!^_^ –

+0

Pas de problème ... bon pour vous pour essayer de nouvelles choses! SQL est difficile à maîtriser; J'ai personnellement trouvé quelques livres simples comme "Beginning Databases" (l'un des livres "Sams 24 hour Teach Yourself") pour être d'une grande aide. – jvenema

1

Utilisez une jointure externe pour joindre les contacts et les tables e-mail:

SELECT 
     CONCAT(fname,', ',sname) AS name, email.address AS email 
FROM 
    contacts c 
    left outer join emails e on (c.contactID = e.contactID) 

Cela vous ramènera tous les contacts et leur son adresse e-mail s'ils ont une autre adresse sage sera nulle.

+0

Merci beaucoup! L'aide était fantastique :) –

Questions connexes