suntrop
Erfahrenes Mitglied
Servus. Kurz zur Situation: ein User/Datensatz wird ignoriert, wenn in einem DB-Feld für die Landeszuordnung (ud.countryId) eine „0“ steht. User soll trotzdem angezeigt werden. Wie kann ich das im Left Join notieren?
Die MySQL Tabelle sieht in etwa so aus:
id | name | email (…) countryId | …
Mit der countryId ermittel ich in der anderen Tabelle in welchem Land der User wohnt. Das heißt dort stehen üblicherweise Ziffern (0-240 oder so). Wenn jedoch das Land unbekannt ist, dann kann ich keine Landes-ID eintragen.
Was also tun?
PHP:
$sql = '
SELECT
ud.id,
(…)
co.countryName AS Land,
(…)
FROM
userdetails ud
LEFT JOIN (
users u,
country co,
businessbranch b
)
ON (
u.id = ud.userId AND
ud.countryId = co.id AND
ud.businessBranchId = b.id
)
WHERE
ud.visible = 1
AND
u.active = 1';
// Suchmöglichkeiten einschließen
// Suchfeld
if ($search != false) {
$sql .= ' AND (';
$sql .= 'ud.lastName LIKE "%'.mysql_real_escape_string($search).'%"';
$sql .= ' OR ud.firstName LIKE "%'.mysql_real_escape_string($search).'%"';
$sql .= ' OR ud.addressCity LIKE "%'.mysql_real_escape_string($search).'%"';
$sql .= ' OR b.branch LIKE "%'.mysql_real_escape_string($search).'%"';
if (is_numeric($search)) {
$sql .= ' OR ('.mysql_real_escape_string($search).' >= ud.dateEntry AND '.mysql_real_escape_string($search).' <= ud.dateLeaving)';
}
$sql .= ')';
}
// Anfangsbuchstabe
if ($letter != false) {
$sql .= ' AND (';
$sql .= 'ud.lastName LIKE "'.mysql_real_escape_string($letter).'%"';
$sql .= ')';
}
// Reihenfolge
$sql .= ' ORDER BY ud.lastName';
// Anzahl
$sql .= ' LIMIT ' . $limitStart . ', ' . $limitCount;
Die MySQL Tabelle sieht in etwa so aus:
id | name | email (…) countryId | …
Mit der countryId ermittel ich in der anderen Tabelle in welchem Land der User wohnt. Das heißt dort stehen üblicherweise Ziffern (0-240 oder so). Wenn jedoch das Land unbekannt ist, dann kann ich keine Landes-ID eintragen.
Was also tun?