1. Lieber Benutzer,

    Du musst bei uns registriert sein, um an den Diskussionen teilzunehmen. Melde dich jetzt an - kostenfrei und unverbindlich. Und stelle Deine eigenen Fragen oder gib uns hilfreiche Antworten

Inner Joins

Dieses Thema im Forum "Datenbanken - z.B. MySQL" wurde erstellt von webber979, 17 Januar 2012.

  1. webber979

    webber979 Neues Mitglied

    Registriert seit:
    24 April 2011
    Beiträge:
    108
    Punkte für Erfolge:
    0
    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.:-D
    Vielen Dank im Vorraus
    webber979
    Werbung: Jetzt registrieren, damit diese Werbung verschwindet
  2. mermshaus

    mermshaus Senior HTML'ler

    Registriert seit:
    11 August 2009
    Beiträge:
    5.369
    Punkte für Erfolge:
    48
  3. webber979

    webber979 Neues Mitglied

    Registriert seit:
    24 April 2011
    Beiträge:
    108
    Punkte für Erfolge:
    0
    Danke schonmal aber genaus diesen Teil verstehe ich einfach nicht trotz dass der Syntax ja einfach ist.
  4. webber979

    webber979 Neues Mitglied

    Registriert seit:
    24 April 2011
    Beiträge:
    108
    Punkte für Erfolge:
    0
    Funktioniert das?
    PHP:
    1.     <?php
    2. $anredevari = $mysqli->query(" SELECT anrede_ID FROM benutzer WHERE nachname = '".$_SESSION["nachname"]."'");
    3.    
    4. $ergebnisanrede = $mysqli->query("
    5.                            SELECT
    6.                                  anrede
    7.                            FROM
    8.                                  anrede
    9.                            WHERE
    10.                                 ID = $anredevari ");
    11. $themavari = $mysqli->query(" SELECT thema_ID FROM benutzer WHERE nachname = '".$_SESSION["nachname"]."'");
    12.    
    13. $ergebnisthema = $mysqli->query("
    14.                            SELECT
    15.                                  thema
    16.                            FROM
    17.                                  thema
    18.                            WHERE
    19.                                 ID = $themavari ");
    20. $themavari = $mysqli->query(" SELECT thema2_ID FROM benutzer WHERE nachname = '".$_SESSION["nachname"]."'");
    Natürlich wird die DB auch sachgemäß geöffnet sowie die Tabellen selbst.
    Und dann halt abgespielt:
    PHP:
    1. <?php if( $kunstlername != ""){echo "<tr><h2>" . htmlspecialchars($ergebnis["kunstlername"]) . "</h2></tr>";};?>
    2.         <tr> <h3><?php echo htmlspecialchars($ergebnis["stadt"]) ;?>,&nbsp;<?php echo htmlspecialchars($ergebnisland) ; ?></h3></tr>
    3.         <?php if( $ergebnis["alter"] != ""){echo'<tr> <h2> . htmlspecialshars($ergebnis["alter"]) .  </h2></tr>';};?>
    4.         </table>
    5.         </div>
    6.         <div class="rechtsboxprofiltextmusikspezifisches">
    7.         <table border="0">
    8.         <tr>Ich mache es als: <?php echo $ichmacheesals ?></tr>
    9.         <?php if( $ergebnisniveau != ""){echo"<tr>Niveau :" . htmlspecialchars($ergebnisniveau) . "</tr>";};?>
    10.         <?php if( $ergebnistaetigkeit != ""){echo"<tr>T\&auml\;tig in/als :" . htmlspecialchars($ergebnistaetigkeit) . "</tr>";};?>
  5. mermshaus

    mermshaus Senior HTML'ler

    Registriert seit:
    11 August 2009
    Beiträge:
    5.369
    Punkte für Erfolge:
    48
    Geht es jetzt nicht mehr um Joins? Ich werde gerade aus dem Thread nicht so recht schlau.
  6. webber979

    webber979 Neues Mitglied

    Registriert seit:
    24 April 2011
    Beiträge:
    108
    Punkte für Erfolge:
    0
    Wieso ist das nicht Tabellen übergreifend.
    Außerdem funktioniert es überhaupt?
  7. struppi

    struppi Guest

    Warum sollten mehrere Abfragen nicht funktionieren? Aber verknüpfen tut dein Code nichts.
  8. webber979

    webber979 Neues Mitglied

    Registriert seit:
    24 April 2011
    Beiträge:
    108
    Punkte für Erfolge:
    0
    Ja genau und wie kann ich die verwendeten Tabellen verknüpfen damit mein Code funktioniert?
  9. threadi

    threadi Moderator

    Registriert seit:
    20 Oktober 2006
    Beiträge:
    13.828
    Punkte für Erfolge:
    63
    So wie Du es in Beitrag #3 selbst geschrieben hast - so musst Du deine Tabellen auch verknüpfen.
  10. mermshaus

    mermshaus Senior HTML'ler

    Registriert seit:
    11 August 2009
    Beiträge:
    5.369
    Punkte für Erfolge:
    48
    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.
  11. webber979

    webber979 Neues Mitglied

    Registriert seit:
    24 April 2011
    Beiträge:
    108
    Punkte für Erfolge:
    0
    1. Wäre dieser Code richtig
    PHP:
    1.  $anredevari = $mysqli->query("select anrede from anredetabelle left join (anrede_ID) on (select anrede_ID from benutzer) where $nachname = '".$_SESSION["nachname"]." ' ")
    2.  
    ?

    2. Was bringen inner joins wirklich?

    3. Gehören sie zur Normalisierung dazu oder reichen Tabellen die nur ID's beinhalten?

    Danke im Voraus
    alex
  12. threadi

    threadi Moderator

    Registriert seit:
    20 Oktober 2006
    Beiträge:
    13.828
    Punkte für Erfolge:
    63
    Nein, der Code ist nicht richtig. Aus 2 Gründen:

    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.
  13. mermshaus

    mermshaus Senior HTML'ler

    Registriert seit:
    11 August 2009
    Beiträge:
    5.369
    Punkte für Erfolge:
    48
  14. webber979

    webber979 Neues Mitglied

    Registriert seit:
    24 April 2011
    Beiträge:
    108
    Punkte für Erfolge:
    0
    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.
  15. mermshaus

    mermshaus Senior HTML'ler

    Registriert seit:
    11 August 2009
    Beiträge:
    5.369
    Punkte für Erfolge:
    48
    Der in #11? Es scheint hier im Forum irgendwie Mode zu sein, weitere SELECT-Anfragen in JOINs zu schreiben. Mir erscheint das völlig sinnfrei.
  16. webber979

    webber979 Neues Mitglied

    Registriert seit:
    24 April 2011
    Beiträge:
    108
    Punkte für Erfolge:
    0
    1) Nein ich meine den in #4. Ist der richtig?

    2) Wie so ist es denn sinnlos mehrere selects zumachen?
    Wie soll der Join denn sonst funktionieren?
  17. mermshaus

    mermshaus Senior HTML'ler

    Registriert seit:
    11 August 2009
    Beiträge:
    5.369
    Punkte für Erfolge:
    48
    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:

    - PHP: mysqli_result::fetch_row - Manual
  18. dernimmt6

    dernimmt6 Neues Mitglied

    Registriert seit:
    2 Februar 2012
    Beiträge:
    13
    Punkte für Erfolge:
    0
  19. webber979

    webber979 Neues Mitglied

    Registriert seit:
    24 April 2011
    Beiträge:
    108
    Punkte für Erfolge:
    0
    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
    Ich hab leider vergessen wozu man den braucht. Kann jemand das nochmal ganz kurz erwähnen? Danke!
  20. mermshaus

    mermshaus Senior HTML'ler

    Registriert seit:
    11 August 2009
    Beiträge:
    5.369
    Punkte für Erfolge:
    48
    Ich habe dir die entsprechende Seite der Anleitung sogar verlinkt…

    Leute, klickt Links an. Das ist echt nicht mehr witzig.

Diese Seite empfehlen