Steffen: SQL Abfrage, Problem bei Formulierung

Beitrag lesen

Hi!

Tabelle1
Name   Straße ID

Tabelle2
PLZ Nationalität ID

Die Tabelle2 ist eine art erweiterung für Tabelle eins. Sie sind durch die ID verknüpft.

Was genau versprichst du dir von dieser Aufteilung? Und wie realisierst du, dass beim Einfügen von Datensätzen in die eine Tabelle nicht bereits vorhandene IDs der anderen Tabelle versehentlich vergeben werden?

Mein Problem ist, ich möchte gerade alle Werte aus Tabelle2 angezeigt bekomme die eine ID haben, die nicht mit der aus der Tabelle1 übereinstimmen.

Das kannst du durch eine Selektion von Tabelle2 erreichen, der du per LEFT JOIN die Tabelle 1 anbindest. Du bekommst dann erst einmal grundsätzlich alle Datensätze aus Tabelle 2. Wenn es kein Pendant in Tabelle1 gibt, sind deren Felder NULL, also: ... WHERE Tabelle1.ID IS NULL

SELECT PLZ Nationalität, tabelle2.ID
FROM Tabelle2 INNER JOIN Tabelle1 ON Tabelle2.id = Tabelle1.ID
WHERE Tabelle1.ID != Tabelle2.id;

Was ist daran falsch!!! kann mir da jemand bitte einen Tipp geben..

Daran ist falsch, dass du mit dem INNER JOIN nur die Datensätze ansprichst, die in beiden Tabellen enthalten sind. Mit der WHERE-Bedingung schließt du dann eben diese Datensätzt wieder aus. Der LEFT JOIN ist übrigens ein OUTER JOIN[*]. Solche Joins beziehen auch die außerhalb der Schnittmenge der beiden Tabellen stehenden Datensätze ein.

[*] volle Bezeichnung: LEFT OUTER JOIN. Da LEFT und RIGHT immer nur bei Outer Joins auftreten, kann man das OUTER weglassen.

Lo!

Okey danke des Problem hab ich gelöst :)

Mhh ein neues Problem, ich habe jetzt die Ausgabe dieser Abfrage aber es sind halt umd ie 120 datensätze.

Kann man des iwie so machen, dass man auf der ersten seite 30 sätze hat und dann mit nem pfeil oder so die nächsten 30 sätze bekommt.

Also hab mich erkundigt und es hieß mit Limit aber wie soll ich des mit meiner Ausgabe kombinieren. (bzw mit meiner Abfrage)

In der Abfrage steht dann ja ganz unten Limit 0,20, das heißt das er bei dem ersten Daten anfängt und bei 20 aufhört, nun wie soll ich des dann mit den pfeilen umsetzen, oder kann man des auch noch irgendwie anders machen.

Meine Ausgabe

while ($datenarray = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
                         {

printf ("

<td>
                                            Text
                                     </td>
                                ",

$datenarray["Name"], $datenarray["id"]);