Veröffentlicht 23. Juni 200421 j Hallo Leute! Ich programmiere gerade an einer Inventarverwaltung... (PHP/MySQL) Nun habe ich folgende Ausgangssituation: Tabelle "user": userid | username | pc1 | ..... 1 | oscha | 001 | .... Tabelle "pc": pcid | mhz | ... 001 | 1500 | ... Wie ihr seht hat der User "oscha" den pc1 mit der userid "001! zugeordnet... so weit wohl klar. Nun möchte ich mit hilfe von MySQL/PHP herausbekommen, welche PC's nicht zugeordnet sind. Kann mir jemand bei meinem Problem weiterhelfen??? Danke & Gruß oscha *EDIT* ich konnte mir selbst behelfen, jedoch habe ich noch ein problem: SELECT pc.pcid, pc.prozessor FROM pc INNER JOIN user ON user.pc1 = pc.pcid WHERE user.pc1 = '000' problem folgendes: bei = 000 liefert er mir keine ergebnisse, jedoch bei = 001 ein das richtige
23. Juni 200421 j Hallo, das ist auch richtig so. Bei 000 gibt es ja keine Zuordnung also kann er auch nichts anzeigen. Möchtest Du jetzt wissen, welcher User kein PC hat oder welche PC's keinen User hat? Frank
23. Juni 200421 j Welcher PC keinen User zugeordnet hat wobei in einer zweiten Abfrage das andere auch sinnvoll wäre...
23. Juni 200421 j Versuch es mal so: SELECT pc.pcid, pc.prozessor FROM pc LEFT JOIN user ON pc.pcid = user.pc1 Frank
23. Juni 200421 j .... FROM pc LEFT JOIN user ON pc.pcid = user.pc1 WHERE user.pc1 = '0'" bringt auch keine ausgabe... wenn ich jedoch als Kriterium '001' eingebe zeigt er mir den betreffenden PC *?* vielleicht hilft das weiter... das feld pc1 und pcid sind: int(3) Zerofilled - Felder
23. Juni 200421 j Wenn Du es ohne where Bedingung machst, dann müsstest Du doch eine Liste bekommen mit einträgen, wo an manchen Stellen Usereinträge fehlen oder? Frank
24. Juni 200421 j Welche Bedingung hast Du definiert wenn ein User keinen PC hat? Wenn Du da eine Bedinung definiert hast, kannst Du diese ja abfragen. Z.B. gibt es keinen Computer mit der ID 000 - so waere eine Möglichkeit jedem Benutzer die 000 zu verpassen der keinen PC sein eigen nennen darf, dann kannst Du ganz normal mit einem Join abfragen. Als Leerkriterium würde ich persönlich NULL verwenden - sofern das in der DB Table auch erlaubt wurde. Gruesse Mr Magix
24. Juni 200421 j hi leute! Die abfrage funktioniert, jedoch wirkt das kriterium immer noch nicht ganz. bei folgenden kriterien bekomme ich keine ausgabe, obwohl es null werte in dieser spalte gibt. : WHERE user.pc1 = '000' WHERE user.pc1 = '0' WHERE user.pc1 = NULL wenn ich nach einen wer wie 001, 002 oder 003 frage, die auch vorhanden sind, dann werden diese ausgegeben... Zur Info: "PC1"-Spalte INT(3), UNSIGNED ZEROFILL, NOT NULL, Standart: 000 gruß oscha
24. Juni 200421 j Auf NULL musst du so abprüfen: WHERE user.pc1 IS NULL und int felder im allgemeinen ohne '' und auch ohne führende nullen: WHERE user.pc1 = 0
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.