Hallo Leute,
bin gerade dabei eine MYSQl DB zu normalisieren. Ich möchte halt das die beispiel: Feuerwehr_ID auf die ID der Tabelle Feuerwhr zugreift und den Datensatz ausließt. Ich habe erfahren, dass man das mit Inner Joins macht. Hab mich darüber schon informiert. MySQL - Joins -Inner Join
Jedoch habe ich es nicht ganz verstanden, weil ich glaube, dass bei mir ein Denkfehler ist darüber wie die ID(Feuerwehr_ID) jetzt genau bezeichnet werden muss um die Tabelle auch zu erwischen. Ich hab also Probleme mit dem Syntax.:neutral:
Könnt ihr mir eine leichter zu verstehende Seite zeigen oder einfach ein ganz kleines SCHEMA aufschreiben(bitte bitte mit reelen bezeichnungen, weil ich es mit pr.IS, pr_ID, Product.ID, blubb.ID, blubb.pr und sowas eben nicht ganz verstehen kann.:?
Ich hoffe ihr habt verständnis dafür.
Vielen Dank im Vorraus
webber979
Funktioniert das?
[PHP] <?php
$anredevari = $mysqli->query(" SELECT anrede_ID FROM benutzer WHERE nachname = ‚„.$_SESSION[„nachname“].“‘");
$ergebnisanrede = $mysqli->query("
SELECT
anrede
FROM
anrede
WHERE
ID = $anredevari „);
$themavari = $mysqli->query(“ SELECT thema_ID FROM benutzer WHERE nachname = ‚„.$_SESSION[„nachname“].“‘");
$ergebnisthema = $mysqli->query("
SELECT
thema
FROM
thema
WHERE
ID = $themavari „);
$themavari = $mysqli->query(“ SELECT thema2_ID FROM benutzer WHERE nachname = ‚„.$_SESSION[„nachname“].“‘");[/PHP]
Natürlich wird die DB auch sachgemäß geöffnet sowie die Tabellen selbst.
Und dann halt abgespielt:
[PHP]<?php if( $kunstlername != ""){echo "
Ich sag mal: Wenn du Code haben möchtest, poste bitte einen importierbaren SQL-Dump mit Testdaten und eine genau Beschreibung dessen, was du inhaltlich erreichen möchtest.
Wäre dieser Code richtig [PHP] $anredevari = $mysqli->query(„select anrede from anredetabelle left join (anrede_ID) on (select anrede_ID from benutzer) where $nachname = '“.$_SESSION[„nachname“]." ’ ")
[/PHP]?
Was bringen inner joins wirklich?
Gehören sie zur Normalisierung dazu oder reichen Tabellen die nur ID’s beinhalten?
a) Eine Tabelle anrede_ID gibt es doch sicher nicht. Das ist der Name der Spalte in der Tabelle. Du musst hier also den Tabellennamen nennen, nicht die Spaltenbezeichnung.
b) Die where-Bedingung soll sicherlich die auf die Spalte nachname verweisen, nicht $nachname.
INNER JOINs entsprechend bei MySQL dem Einbinden von Tabellen per FROM und WHERE in einer Bedingung. Ist inhaltlich wie strukturell das Selbe. Bei anderen Datenbanksystemen (wie Oracle) hat dies auch Performance-Gründe, imho bei MySQL eher seltener.
Die Normalisierung bezieht sich auf die Datenbankstruktur, nicht auf Statements die man auf diesen ausführt.
Also brauch ich für eine Normalisierte Datenbank keine Inner Joins, sondern ich kann das ganze auch mit meinem bereits gezeigtem Code über zwei Mysql abfragen machen, richtig?
Ist der wenigstens richtig.
Die Antwort auf alle Fragen ist: Syntax und Funktionsweise folgen festen Regeln. Das kann nicht einfach ausgedacht werden.
Ein Beispiel, wie Joins geschrieben werden, habe ich verlinkt. Ansonsten lässt sich das aber auch anderswo im Web nachlesen. Dir fehlt jedenfalls jedes grundlegende Wissen zu dem Thema. Annahmen auf der Basis müssen falsch sein.
In #4 vergisst du den Schritt, die konkreten Datensätze aus dem Result set abzuholen. Sieh dir das erste Beispiel hier an:
Alles klar Leute,
danke schonmal an alle,
also Joins sind nichts für Anfänger aber trotzdem leicht zu benutzen(Danke nochmals für den Link mermhaus )
In meinem Fall müssen sie nicht umbedingt Sinn machen.
Zu dem Befehl
while ($row = $result->fetch_row()) {
}
Ich hab leider vergessen wozu man den braucht. Kann jemand das nochmal ganz kurz erwähnen? Danke!