# [mysql] 2 tabellen vergleichen und unstimmigkeiten anzeigen !



## fla5hi (2. Januar 2008)

Moin Moin,

ich habe eine frage!!

ich habe eine datenbank

dort sind 2 tabellen mit jeweils 1 feld

einmal plz_1 und plz_2

ich möchte jetzt plz1 mit plz2 vergleichen

ich habe jetzt eine PLZ 66123 ( das wäre saarbrücken)

das script checkt ja alle einträge..

gibt es für eine PLZ keinen eintrag bzw er findet nicht das passende gegenstück sollte mir das script dies ausgeben!

also nur wo er kein gegenstück findet!


ich stehe auf dem schlauch und habe keine ahnung wie ich das umsetzen könnte!


----------



## mAu (2. Januar 2008)

Hm. Ich kanns jetzt gerade nicht testen, aber probier mal folgendes:

```
SELECT * FROM `tabelle_2` WHERE `tabelle_2`.`plz` NOT IN `tabelle_1`.`plz`
```


----------



## fla5hi (2. Januar 2008)

sers danke für deinen tipp aber ich krieg da einen fehler warum?


```
<?php
include ('db-connect.php');


$sgeo="SELECT * FROM geo WHERE institutionen .i_plz NOT IN geo . g_plz";
$qgeo=mysql_query($sgeo) or die("$sgeo<BR><BR>".mysql_error());
$mgeo=mysql_fetch_array($qgeo);
?>

<?
echo $sgeo;
?>
```


in der tabelle geo stehen die richtigen (g_plz). und diese möchte ich vergleichen mit institutionen (i_plz)

dh.

wenn die institutionen plz nicht mit der von geo übereinstimmen muss er das ergebniss ausgeben im prinzip alle.


----------



## mAu (2. Januar 2008)

1.) Bitte immer den Fehler posten,
2:

```
$sgeo="SELECT * FROM `geo` WHERE `geo`.`g_plz` NOT IN `institutionen`.`i_plz`"; // Da dürfen keine Leerzeichen bei den Punkten sein
```

*Nachtrag*
Wenn du prüfen willst, ob die Plz von der Institutionentabelle korrekt ist, dann muss die Query lauten:

```
SELECT * FROM `institutionen` WHERE `institutionen`.`i_plz` NOT IN `geo`.`plz`
/* Selektiere alle Institutionen, deren Plz nicht in Geo */
```


----------



## fla5hi (2. Januar 2008)

hier der fehler mit dem neuen code

SELECT * FROM `geo` WHERE `geo`.`plz` NOT IN `institutionen`.`i_plz`

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'institutionen`.`i_plz`' at line 1


(geo) das feld ist plz und nicht g_plz mein fehler.. habs auch geändert dennoch dieser error


----------



## maeTimmae (2. Januar 2008)

```
SELECT
    *
FROM
    `institutionen`
WHERE
    `institutionen`.`i_plz` NOT IN (
        SELECT
            `plz`
        FROM
            `geo`
    )
;
```

Siehe IN und Subqueries.

Flashi: Bitte benutze die angebotenen bbCodes um Queries und Codezeilen formatieren zu lassen. Für MySQL eignet sich [code=sql]Querystring[/code]


----------



## fla5hi (2. Januar 2008)

```
<?php
include ('db-connect.php');


$sgeo="SELECT * FROM `institutionen` WHERE `institutionen`.`i_plz` NOT IN (SELECT `plz` FROM `geo`);   
$qgeo=mysql_query($sgeo) or die("$sgeo<BR><BR>".mysql_error());
$mgeo=mysql_fetch_array($qgeo);
?>


<?
echo $sgeo;
?>
```

das jetzt die abfrage aber es kommt immer noch ein fehler...



```
Parse error: syntax error, unexpected T_VARIABLE in /home/www/web38/html/test.php on line 6
```


----------



## ronaldo84 (2. Januar 2008)

Das ist ein Fehler im PHP Code. Nachdem du den SQL-String zuweißt fehlt ein "


----------

