2009-04-01 9 views
0

Ich lerne PHP und MySQL, um einen Hang von Server-Side-Scripting und für persönliches Interesse/Entwicklung. Das erste "Programm" jenseits von "Hallo Welt" scheint seinen eigenen Blog zu schreiben.Wie zu verhindern, zu kontern oder zu kompensieren, ein leeres/NULL-Feld (MySQL) eine leere Menge

Dies ist ein wenig über mir noch und so dachte ich, ich würde mit einem Kontakt-Datenbank-Typ beginnen. So weit so gut, aber (und da ist immer das aber!) Ich versuche eine Präsentation in der Form zu formatieren, dass der Name des Kontakts als mailto: link formatiert ist.

Dies ist gut, bis ich es wagen, um einen Kontakt zu geben, die keine E-Mail-Adresse in der Db hat, an denen die offensichtliche Fehlen eines email.contactID Punkt die contacts.contactID erzieht den Kopf zu entsprechen.

Ich realisiere, dass ich in der Lage sein sollte, damit umzugehen, aber ... Ich kann nicht denken, wie (yay zu Schlaflosigkeit! @. @). Irgendwelche Vorschläge würden geschätzt werden.

Antwort

2

Sie möchten einen linken (aka linken äußeren) Join.

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

Danke! Ich nehme an, es ist einfach, wenn Sie wissen, wie? Sehr geschätzt!^_^ –

+0

Kein Problem ... gut für Sie zum Ausprobieren neuer Sachen! SQL ist ein schwieriger zu meistern; Ich persönlich fand einige einfache Bücher wie "Anfängliche Datenbanken" (eine von "Sams 24 Stunden Teach Yourself" -Büchern) eine große Hilfe. – jvenema

1

Verwenden Sie eine äußere Verbindung der Kontakte und E-Mail-Tabellen zu verknüpfen:

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

Dadurch kehren Sie alle Kontakte und ihre E-Mail-Adresse, wenn sie eine haben, andere weise Adresse wird null sein.

+0

Vielen Dank! Die Hilfe war fantastisch :) –

Verwandte Themen