---
title: "om \"namn\" finns sätt samma id... hur gör man detta?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/70381-om-namn-finns-sätt-samma-id-hur-gör-man-detta"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "mikael_a"
published: "2003-03-07T13:35:34.000Z"
updated: "2003-03-08T23:02:35.000Z"
replies: 25
views: 560
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/70381-om-namn-finns-sätt-samma-id-hur-gör-man-detta"
---

# om "namn" finns sätt samma id... hur gör man detta?

_Sida 1 av 2._

## #1 — mikael_a, 2003-03-07T13:35Z

Hej,

Jag har skapat en MySQL databas som innehåller, flera olika tabeller...

tex: Adress som innehåller adresser, och adress_medlem som innehåller id för de olika personerna.

hur skall en SQL-sats se ut om tex person 1 matar in "test  gatan 2" som gatuadress och sedan matar person 2 in samma adress. denna får id 1 i tabell adress. 

men id för person 2 skall ju vara det samma som för person 1, så att ingen dubbellaggring kan förekomma.

```php

//kopplar upp...

    $db = mysql_connect("localhost","123","123") or die("Det gick inte: ".mysql_error());
 	
     //väljer db...
     mysql_select_db("miab02",$db);

     $sql = "INSERT INTO Medlem VALUES('', '$Fnamn', '$Enamn')";
     mysql_query($sql);
     $Medlem_Id = mysql_insert_id();

     $sql = "INSERT INTO Adress VALUES('', '$Gata', '$Postnummer', '$Stad')";
     mysql_query($sql);
     $Adress_Id = mysql_insert_id();
     echo $Adress_Id;

     $sql = "INSERT INTO Medlem_Adress VALUES('$Medlem_Id', '$Adress_Id')";
     mysql_query($sql);
```

så ser min kod ut nu... hoppas att ni förstår

Permalänk: https://www.webforum.nu/p/70381

## #2 — LarsG, 2003-03-07T14:00Z

Det verkar väldigt onödigt att lagra adress separat.

Det du behöver göra är, innan du lagrar en adress så får du göra en slagning efter id. Om adressen finns så använd det id du får upp annars så gör du insert.

Permalänk: https://www.webforum.nu/p/969916

## #3 — mikael_a, 2003-03-07T14:05Z

Jo, men jag håller bara på att försöka lära mig... 

Jag har tre tabeller nu...

Medlem, Adress och Medlem_Adress

Medlem innehåller: förnamn och efternamn
Adress innehåller: gata, postnummer och stad
medlem_adress innehåller: medlem_id och adress_id

dessa uppdateras enligt ovanstående SQL sats, men om nu tex "testgatan 1" redan har id 1 vill jag att om en annan person också bor på samma gata för samma id...

micke

Permalänk: https://www.webforum.nu/p/969924

## #4 — mikael_a, 2003-03-08T14:06Z

Någon som vill visa mig?

Permalänk: https://www.webforum.nu/p/973515

## #5 — LarsG, 2003-03-08T18:16Z

```
$sql = "select  Adress_Id from Adress 
where gata = '$Gata' and Postnummer = '$Postnummer'
and Stad = '$Stad';
$c = mysql_query($sql) or die(mysql_error());
if ( $r = mysql_fetch_row($c)) {
   $Adress_Id = $r[0];
} else

$sql = "INSERT INTO Adress VALUES('', '$Gata', '$Postnummer', '$Stad')";

     mysql_query($sql);

     $Adress_Id = mysql_insert_id();
}
     echo $Adress_Id;
```

Permalänk: https://www.webforum.nu/p/973621

## #6 — mikael_a, 2003-03-08T18:27Z

tack du är en ängel... skall testa nu på en gång

Permalänk: https://www.webforum.nu/p/973628

## #7 — mikael_a, 2003-03-08T18:32Z

LarsG, skulle du vilja kommentera koden...

är det bara att lägga till mina resterande rader efter din? så att alla tabeller uppdateras... nu uppdateras ju bara Adress...

micke

Permalänk: https://www.webforum.nu/p/973629

## #8 — mikael_a, 2003-03-08T18:44Z

jag får Parse error line 30

```php

   	$sql = "SELECT  Adress_Id from Adress
   where gata = '$Gata' and Postnummer = '$Postnummer'
   and Stad = '$Stad';
   $c = mysql_query($sql) or die(mysql_error());
   if ( $r = mysql_fetch_row($c)) {
      $Adress_Id = $r[0];
   } else

RAD 30 -->     $sql = "INSERT INTO Medlem VALUES('', '$Fnamn', '$Enamn')";
     mysql_query($sql);
     $Medlem_Id = mysql_insert_id();

     $sql = "INSERT INTO Adress VALUES('', '$Gata', '$Postnummer', '$Stad')";
     mysql_query($sql);
     $Adress_Id = mysql_insert_id();

     $sql = "INSERT INTO Medlem_Adress VALUES('$Medlem_Id', '$Adress_Id')";
     mysql_query($sql);
   }
        echo $Adress_Id;
```

Permalänk: https://www.webforum.nu/p/973636

## #9 — LarsG, 2003-03-08T19:11Z

} else {

Permalänk: https://www.webforum.nu/p/973649

## #10 — mikael_a, 2003-03-08T19:16Z

nope... fortfarande rad 30...

```php

<?

    echo $sql;

    //kopplar upp...

    $db = mysql_connect("localhost","xxx","xxx") or die("Det gick inte: ".mysql_error());
 	
     //väljer db...
     mysql_select_db("miab02",$db);

   	$sql = "SELECT  Adress_Id from Adress
   where gata = '$Gata' and Postnummer = '$Postnummer'
   and Stad = '$Stad';
   $c = mysql_query($sql) or die(mysql_error());
   if ( $r = mysql_fetch_row($c)) {
      $Adress_Id = $r[0];
   } else {

     $sql = "INSERT INTO Medlem VALUES('', '$Fnamn', '$Enamn')";
     mysql_query($sql);
     $Medlem_Id = mysql_insert_id();

     $sql = "INSERT INTO Adress VALUES('', '$Gata', '$Postnummer', '$Stad')";
     mysql_query($sql);
     $Adress_Id = mysql_insert_id();

     $sql = "INSERT INTO Medlem_Adress VALUES('$Medlem_Id', '$Adress_Id')";
     mysql_query($sql);
   }
        echo $Adress_Id;

     echo "<br /><br />Affected rows:".mysql_affected_rows();
     echo "<br /><br />Förnamn...: $Fnamn";
	 echo "<br /><br />Efternamn.: $Enamn";
	 echo "<br /><br />Gata......: $Gata";
	 echo "<br /><br />Postnummer: $Postnummer";
	 echo "<br /><br />Stad......: $Stad";

mysql_close($db);

?>
```

micke

Permalänk: https://www.webforum.nu/p/973652

## #11 — LarsG, 2003-03-08T19:29Z

```
$sql = "SELECT  Adress_Id from Adress

   where gata = '$Gata' and Postnummer = '$Postnummer'

   and Stad = '$Stad'";
```

Missade en "

den här kodem

```
 $sql = "INSERT INTO Medlem VALUES('', '$Fnamn', '$Enamn')";

     mysql_query($sql);

     $Medlem_Id = mysql_insert_id();
```

skall flyttas så att den ligger utanför if-blocket.

Permalänk: https://www.webforum.nu/p/973660

## #12 — mikael_a, 2003-03-08T19:39Z

nästan...

i tabellen medlem_adress får medlem_id värdet 0 fast adress_id stämmer... 

medlem_id får sitt värde ifrån medlem, vars id kopplas till medlem_id i medlem_adress

Permalänk: https://www.webforum.nu/p/973663

## #13 — LarsG, 2003-03-08T19:46Z

Kommer det in rätt data i medlem?

Hur ser kodent ut nu?

Permalänk: https://www.webforum.nu/p/973669

## #14 — mikael_a, 2003-03-08T19:49Z

Adress, Medlem har rätt värden, den enda tabellen som inte stämmer är medlem_adress och då medlem_id, som är noll

```php

<?

    echo $sql;

    //kopplar upp...

    $db = mysql_connect("localhost","xxx","xxx") or die("Det gick inte: ".mysql_error());
 	//$db = mysql_connect("localhost","micke","12216408") or die("Det gick inte: ".mysql_error());

     //väljer db...
     mysql_select_db("miab02",$db);

   	$sql = "SELECT  Adress_Id from Adress
   where gata = '$Gata' and Postnummer = '$Postnummer'
   and Stad = '$Stad'";

   $c = mysql_query($sql) or die(mysql_error());
   if ( $r = mysql_fetch_row($c)) {
      $Adress_Id = $r[0];
   } else {

     $sql = "INSERT INTO Adress VALUES('', '$Gata', '$Postnummer', '$Stad')";
     mysql_query($sql);
     $Adress_Id = mysql_insert_id();

   }

		$sql = "INSERT INTO Medlem_Adress VALUES('$Medlem_Id', '$Adress_Id')";
    	mysql_query($sql);

        $sql = "INSERT INTO Medlem VALUES('', '$Fnamn', '$Enamn')";
		mysql_query($sql);
        $Medlem_Id = mysql_insert_id();

        echo $Adress_Id;

     echo "<br /><br />Affected rows:".mysql_affected_rows();
     echo "<br /><br />Förnamn...: $Fnamn";
	 echo "<br /><br />Efternamn.: $Enamn";
	 echo "<br /><br />Gata......: $Gata";
	 echo "<br /><br />Postnummer: $Postnummer";
	 echo "<br /><br />Stad......: $Stad";

mysql_close($db);

?>
```

Permalänk: https://www.webforum.nu/p/973672

## #15 — LarsG, 2003-03-08T20:04Z

Du gör insert i fel ordning. Byt ordning, så här

```
        $sql = "INSERT INTO Medlem VALUES('', '$Fnamn', '$Enamn')";

        mysql_query($sql);

$Medlem_Id = mysql_insert_id();

$sql = "INSERT INTO Medlem_Adress VALUES('$Medlem_Id', '$Adress_Id')";

        mysql_query($sql);
```

Permalänk: https://www.webforum.nu/p/973690

## #16 — mikael_a, 2003-03-08T20:11Z

den lägger in rätt värden, men inte så som jag ville...

om jag skrev in samma adress men den fick olika id_nummer + att den räknade id nummret i tabellen ifrån fel håll
1
2
3
4
5
11
10

Permalänk: https://www.webforum.nu/p/973691

## #17 — mikael_a, 2003-03-08T20:13Z

```php

<?

    echo $sql;

    //kopplar upp...

    $db = mysql_connect("localhost","xxx","xxx") or die("Det gick inte: ".mysql_error());
 	//$db = mysql_connect("localhost","micke","12216408") or die("Det gick inte: ".mysql_error());

     //väljer db...
     mysql_select_db("miab02",$db);

   	$sql = "SELECT  Adress_Id from Adress
   where gata = '$Gata' and Postnummer = '$Postnummer'
   and Stad = '$Stad'";

   $c = mysql_query($sql) or die(mysql_error());
   if ( $r = mysql_fetch_row($c)) {
      $Adress_Id = $r[0];
   } else {

     $sql = "INSERT INTO Adress VALUES('', '$Gata', '$Postnummer', '$Stad')";
     mysql_query($sql);
     $Adress_Id = mysql_insert_id();

   }

		$sql = "INSERT INTO Medlem VALUES('', '$Fnamn', '$Enamn')";
		mysql_query($sql);
        $Medlem_Id = mysql_insert_id();

        $sql = "INSERT INTO Medlem_Adress VALUES('$Medlem_Id', '$Adress_Id')";
    	mysql_query($sql);

        echo $Adress_Id;

     echo "<br /><br />Affected rows:".mysql_affected_rows();
     echo "<br /><br />Förnamn...: $Fnamn";
	 echo "<br /><br />Efternamn.: $Enamn";
	 echo "<br /><br />Gata......: $Gata";
	 echo "<br /><br />Postnummer: $Postnummer";
	 echo "<br /><br />Stad......: $Stad";

mysql_close($db);

?>
```

du måste tycka jag är rätt jobbig ;) tacksam för din hjälp

Permalänk: https://www.webforum.nu/p/973693

## #18 — LarsG, 2003-03-08T21:10Z

Då är det väl något fel med select-satsen

Lägg till lite testutskrifter så att du ser vad som händer

```
    $sql = "SELECT  Adress_Id from Adress

   where gata = '$Gata' and Postnummer = '$Postnummer'

   and Stad = '$Stad'";

   echo "SQL:" . $sql . "<br>";

   $c = mysql_query($sql) or die(mysql_error());

   if ( $r = mysql_fetch_row($c)) {

      $Adress_Id = $r[0];
      echo "Adress_id " . $Adress_Id . 
     " hämtad från tabell. <br>";

   } else {
```

Vilket sekevensnummer som skapas för en post är helt irreellevant. Det enda som betyder något är att det är unikt. Om du vill kunna hålla reda på i vilken ordning som posterna lagts till så måste du ha en datetime kolumn.

Permalänk: https://www.webforum.nu/p/973720

## #19 — mikael_a, 2003-03-08T21:17Z

jag har lagt till några andra data... men din sista skriver den inte ut

echo "Adress_id " . $Adress_Id . 
     " hämtad från tabell. \<br\>";

\*\*\*

SQL:SELECT Adress_Id from Adress where gata = 'qw' and Postnummer = '1' and Stad = 'qw'
12

Affected rows:1

Förnamn...: qw

Efternamn.: qw

Gata......: qw

Postnummer: 1

Stad......: qw

Permalänk: https://www.webforum.nu/p/973726

## #20 — LarsG, 2003-03-08T21:29Z

Får du duplikat i adresstabellen? 

Vad händer om du kör select-frågan separat?

Permalänk: https://www.webforum.nu/p/973733

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/70381-om-namn-finns-sätt-samma-id-hur-gör-man-detta  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/70381-om-namn-finns-sätt-samma-id-hur-gör-man-detta/page2.md
