Zum Inhalt springen

Join Problem


Ramiel

Empfohlene Beiträge

So dann nerv ich euch mal wieder.

also flgendes ich hab jetzt eine datenbank jokes mit den tabellen jokes wo die witze gespeichert werden mit id und aid.

und eine tabelle authors in welcher die namen und email adressen der schreiber eingetragen sind,

dann möchte ich in authors schreiber hinzufügen.

INSERT INTO Authors

(ID, Name, EMail) VALUES

("1","nam1","email1"),

("2","name2","email2")

;

doch wenn ich das eingebe erhalte ich den error 1062 : duplicate entry 1 for key primary

könnte mir vielleicht jemand helfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

so

also wenn ich den befehl:

select left(joketext,20), name, email from jokes, authors;

eingebe funktioniert es noch und ich bekomme eine tabelle angezeigt.

aber sobald ich where aid=authors.id hinzufpge geht es nicht mehr.

aid iist in jokes hab ich damit den richtigen syntax?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Damit hast Du ein sog. Cartesisches produkt. jede zeile der einen Tabelle wird mit jeder Zeile der anderen Tabelle verknüpft. Nicht unbedingt was Du haben möchtest.

aber sobald ich where aid=authors.id hinzufpge geht es nicht mehr.

Es "geht" schon. Es gibt nur einfach keine Daten, die zu dieser Bedingung passen. Anders ausgedrückt: Es gibt keine jokes die zu einer Autorenid passen würden.

Schau in deinen Tabellen nach und überprüfen das.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

ah jetzt seh ichs die spalte aid hat den "inhalt" null

aber wie muss ich das jetzt richitg eingeben um den witzen von er tabelle jokes über die spalte aid einen author zuzuweisen. weil es wäre doch ziemlich sinnfrei wenn ich jedem witz die aid eintragen muss bei ein paar dutzend würde das doch etwas lange dauern

Link zu diesem Kommentar
Auf anderen Seiten teilen

aber wie muss ich das jetzt richitg eingeben um den witzen von er tabelle jokes über die spalte aid einen author zuzuweisen.

Du musst selbst die Spalte aid füllen (manuell oder per Update Befehl) aber die Information wer ursprünglich welchen Witz geschrieben hat ist nicht (mehr?) vorhanden.

Zukünftig musst Du beim Einfügen eines Witzes sicherstellen, dass diese Spalte auch gefüllt ist. Sprich Du legst einen NOT NULL Constraint und zusätzlich noch einen Foreign key (Fremdschlüssel) auf die Spalte der auf die Autoren Tabelle verweist.

Damit hast Du sichergestellt, dass zu jeder aid auch ein Autor existiert - andernfalls bekommst Du eine entsprechende Fehlermeldung.

Dim

Bearbeitet von dr.dimitri
Link zu diesem Kommentar
Auf anderen Seiten teilen

so, ich hab jetzt alles eingetragen.....

danke für die hilfe doktor!

dann hab ich doch gleih noch mal ne frage ist zwar eher php aber dann muss ich nicht extra den speicherplatz des servers belasten....

<body>

<h1>Autoren verwalten</h1>

<ul>
<?php
// Verbindung zum Datenbankserver
$dbcnx = @mysql_connect('localhost', 'root', '1234');
if (!$dbcnx) {
exit('<p>Verbindungsaufbau zum Datenbankserver ' .
' zurzeit nicht möglich.</p>');
}

// Datenbank auswählen
if (!@mysql_select_db('jokes')) {
exit('<p>Auswahl der Witzedatenbank' .
'zurzeit nicht möglich.</p>');
}


$authors =@mysql_query('SELECT id, name FROM authors');
if (!$authors) {
exit('<p>Fehler beim Aufruf aus der Witzedatenbank!<br /> ' . 'Error: ' . mysql_error() . '</p>');
}

while ($author = mysql_fetch_array($authors)) {
$id = $author['id'];
$name = $htmlspecialchars($author['name']);

echo '<li>$name ' .
"<a href='editauthor.php?id=$id'>Bearbeiten</a>" .
"<a href='deleteauthor.php?id=$id'>Löschen</a></li>";
}
?>
</ul>
<p><a href="newauthor.php">Neuen Autor einfügen</a></p>
<p><a href="index.html">Zurück zur Startseite</a></p>


</body>[/PHP]

hier hab ich alles richtig gemacht und trotzdem kommt "ein" fehler:

auf der seite steht dann..

[PHP]Autoren verwalten

Verbindungsaufbau zum Datenbankserver ' . ' zurzeit nicht möglich.'); } // Datenbank auswählen if (!@mysql_select_db('jokes')) { exit('

Auswahl der Witzedatenbank' . 'zurzeit nicht möglich.
'); } $authors =@mysql_query('SELECT id, name FROM authors'); if (!$authors) { exit('

Fehler beim Aufruf aus der Witzedatenbank!
' . 'Error: ' . mysql_error() . '
* '); } while ($author = mysql_fetch_array($authors)) { $id = $author['id']; $name = $htmlspecialchars($author['name']); echo '$name ' . "Bearbeiten" . "Löschen
"; } ?>

Neuen Autor einfügen

Zurück zur Startseite

Link zu diesem Kommentar
Auf anderen Seiten teilen

hier hab ich alles richtig gemacht und trotzdem kommt "ein" fehler:

auf der seite steht dann..

Wenn Du alles richtig gemacht hättest, dann würde es funktionieren...

Was mich hier wundert ist, dass im Browser php Code zu sehen ist. Mein letztes php Programm ist schon länger her, aber das dürfte nicht passieren, wenn dein Webserver richtig konfiguriert ist.

Daher halte ich diese Frage hier für offtopic und Du solltest sie im PHP Forum stellen (und spar nicht mit dem Speicherplatz des Servers :D)

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...