Ankündigung

Einklappen
Keine Ankündigung bisher.

datenbank abfrage geht nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • datenbank abfrage geht nicht

    Hallo an alle,

    ich habe das Problem, das ich eine Datenbank Tabelle habe (Zusatz) aus der ich alle Daten auslesen möchte und anhand der in der Tabelle stehenden charID und der berufe-ID die Rezepte aus der Tabelle (Primary_Rezepte) und (secondary_Rezepte) angezeigt bekommen möchte.

    Hier ist mein versuch, was leider aber nicht so funktioniert. kann mir jemand dabei helfen?

    PHP-Code:
    $stmtz $pdo->prepare('SELECT zu.talents0bild, zu.talents0name, zu.talents0spec, zu.talents1bild, zu.talents1name, zu.talents1spec,

    zu.talents0spell0id, zu.talents0spell0name, zu.talents0spell0icon, zu.talents1spell0id, zu.talents1spell0name, zu.talents1spell0icon,

    zu.talents0spell1id, zu.talents0spell1name, zu.talents0spell1icon, zu.talents1spell1id, zu.talents1spell1name, zu.talents1spell1icon,

    zu.talents0spell2id, zu.talents0spell2name, zu.talents0spell2icon, zu.talents1spell2id, zu.talents1spell2name, zu.talents1spell2icon,

    zu.talents0spell3id, zu.talents0spell3name, zu.talents0spell3icon, zu.talents1spell3id, zu.talents1spell3name, zu.talents1spell3icon,

    zu.talents0spell4id, zu.talents0spell4name, zu.talents0spell4icon, zu.talents1spell4id, zu.talents1spell4name, zu.talents1spell4icon,

    zu.talents0spell5id, zu.talents0spell5name, zu.talents0spell5icon, zu.talents1spell5id, zu.talents1spell5name, zu.talents1spell5icon,

    zu.talents0spell6id, zu.talents0spell6name, zu.talents0spell6icon, zu.talents1spell6id, zu.talents1spell6name, zu.talents1spell6icon,

    zu.talents0glyphsma0item, zu.talents0glyphsma0name, zu.talents0glyphsma0icon, zu.talents1glyphsma0item, zu.talents1glyphsma0name, zu.talents1glyphsma0icon,

    zu.talents0glyphsma1item, zu.talents0glyphsma1name, zu.talents0glyphsma1icon, zu.talents1glyphsma1item, zu.talents1glyphsma1name, zu.talents1glyphsma1icon,

    zu.talents0glyphsma2item, zu.talents0glyphsma2name, zu.talents0glyphsma2icon, zu.talents1glyphsma2item, zu.talents1glyphsma2name, zu.talents1glyphsma2icon,

    zu.talents0glyphsmi0item, zu.talents0glyphsmi0name, zu.talents0glyphsmi0icon, zu.talents1glyphsmi0item, zu.talents1glyphsmi0name, zu.talents1glyphsmi0icon,

    zu.talents0glyphsmi1item, zu.talents0glyphsmi1name, zu.talents0glyphsmi1icon, zu.talents1glyphsmi1item, zu.talents1glyphsmi1name, zu.talents1glyphsmi1icon,

    zu.talents0glyphsmi2item, zu.talents0glyphsmi2name, zu.talents0glyphsmi2icon, zu.talents1glyphsmi2item, zu.talents1glyphsmi2name, zu.talents1glyphsmi2icon,

    zu.professionspri0bild, zu.professionspri0lvl, zu.professionspri0name, zu.professionspri0id, zu.professionspri1bild, zu.professionspri1lvl, zu.professionspri1name, zu.professionspri1id,

    zu.professionssec0bild, zu.professionssec0lvl, zu.professionssec0name, zu.professionssec0id, zu.professionssec1bild, zu.professionssec1lvl, zu.professionssec1name, zu.professionssec1id,

    zu.professionssec2bild, zu.professionssec2lvl, zu.professionssec2name, zu.professionssec2id, zu.professionssec3bild, zu.professionssec3lvl, zu.professionssec3name, zu.professionssec3id,

    pri0.prirez as rezept00, pri1.prirez as rezept01, sec0.secrez as rezept10, sec1.secrez as rezept11, sec2.secrez as rezept12, sec3.secrez as rezept13

    from zusatz as zu

    left join primary_rezepte as pri0 on pri0.prirezid = zu.professionspri0id and pri0.charID = 19377857
    left join primary_rezepte as pri1 on pri1.prirezid = zu.professionspri1id and pri1.charID = 19377857
    left join secondary_rezepte as sec0 on sec0.secrezid = zu.professionssec0id and sec0.charID = 19377857
    left join secondary_rezepte as sec1 on sec1.secrezid = zu.professionssec1id and sec1.charID = 19377857
    left join secondary_rezepte as sec2 on sec2.secrezid = zu.professionssec2id and sec2.charID = 19377857
    left join secondary_rezepte as sec3 on sec3.secrezid = zu.professionssec3id and sec3.charID = 19377857
    where zu.charID = 19377857'
    ); 


  • #2
    Bei so einer Query würde ich auch die Übersicht verlieren. Ich weiß nicht wie gut du im Thema Datenbank bist aber vielleicht könnte richtiges Normalisieren weiterhelfen, zudem wenn du wirklich ALLLE Daten brauchst würde ich einfach "SELECT * FROM ... " machen. Aber es ist in der Regel nicht normal das man ALLE Daten aus der Datenbank anzeigen lässt.
    - Laravel

    Kommentar


    • #3
      was leider aber nicht so funktioniert.
      Gibts ne Fehlermeldung?

      Dein Datenbankdesign macht einen schlechten Eindruck. Sieh dir mal Normalisierung an.
      Ordentlich formatiert:
      Code:
      SELECT
         zu.talents0bild,
         zu.talents0name,
         zu.talents0spec,
         zu.talents1bild,
         zu.talents1name,
         zu.talents1spec,
         zu.talents0spell0id,
         zu.talents0spell0name,
         zu.talents0spell0icon,
         zu.talents1spell0id,
         zu.talents1spell0name,
         zu.talents1spell0icon,
         zu.talents0spell1id,
         zu.talents0spell1name,
         zu.talents0spell1icon,
         zu.talents1spell1id,
         zu.talents1spell1name,
         zu.talents1spell1icon,
         zu.talents0spell2id,
         zu.talents0spell2name,
         zu.talents0spell2icon,
         zu.talents1spell2id,
         zu.talents1spell2name,
         zu.talents1spell2icon,
         zu.talents0spell3id,
         zu.talents0spell3name,
         zu.talents0spell3icon,
         zu.talents1spell3id,
         zu.talents1spell3name,
         zu.talents1spell3icon,
         zu.talents0spell4id,
         zu.talents0spell4name,
         zu.talents0spell4icon,
         zu.talents1spell4id,
         zu.talents1spell4name,
         zu.talents1spell4icon,
         zu.talents0spell5id,
         zu.talents0spell5name,
         zu.talents0spell5icon,
         zu.talents1spell5id,
         zu.talents1spell5name,
         zu.talents1spell5icon,
         zu.talents0spell6id,
         zu.talents0spell6name,
         zu.talents0spell6icon,
         zu.talents1spell6id,
         zu.talents1spell6name,
         zu.talents1spell6icon,
         zu.talents0glyphsma0item,
         zu.talents0glyphsma0name,
         zu.talents0glyphsma0icon,
         zu.talents1glyphsma0item,
         zu.talents1glyphsma0name,
         zu.talents1glyphsma0icon,
         zu.talents0glyphsma1item,
         zu.talents0glyphsma1name,
         zu.talents0glyphsma1icon,
         zu.talents1glyphsma1item,
         zu.talents1glyphsma1name,
         zu.talents1glyphsma1icon,
         zu.talents0glyphsma2item,
         zu.talents0glyphsma2name,
         zu.talents0glyphsma2icon,
         zu.talents1glyphsma2item,
         zu.talents1glyphsma2name,
         zu.talents1glyphsma2icon,
         zu.talents0glyphsmi0item,
         zu.talents0glyphsmi0name,
         zu.talents0glyphsmi0icon,
         zu.talents1glyphsmi0item,
         zu.talents1glyphsmi0name,
         zu.talents1glyphsmi0icon,
         zu.talents0glyphsmi1item,
         zu.talents0glyphsmi1name,
         zu.talents0glyphsmi1icon,
         zu.talents1glyphsmi1item,
         zu.talents1glyphsmi1name,
         zu.talents1glyphsmi1icon,
         zu.talents0glyphsmi2item,
         zu.talents0glyphsmi2name,
         zu.talents0glyphsmi2icon,
         zu.talents1glyphsmi2item,
         zu.talents1glyphsmi2name,
         zu.talents1glyphsmi2icon,
         zu.professionspri0bild,
         zu.professionspri0lvl,
         zu.professionspri0name,
         zu.professionspri0id,
         zu.professionspri1bild,
         zu.professionspri1lvl,
         zu.professionspri1name,
         zu.professionspri1id,
         zu.professionssec0bild,
         zu.professionssec0lvl,
         zu.professionssec0name,
         zu.professionssec0id,
         zu.professionssec1bild,
         zu.professionssec1lvl,
         zu.professionssec1name,
         zu.professionssec1id,
         zu.professionssec2bild,
         zu.professionssec2lvl,
         zu.professionssec2name,
         zu.professionssec2id,
         zu.professionssec3bild,
         zu.professionssec3lvl,
         zu.professionssec3name,
         zu.professionssec3id,
         pri0.prirez as rezept00,
         pri1.prirez as rezept01,
         sec0.secrez as rezept10,
         sec1.secrez as rezept11,
         sec2.secrez as rezept12,
         sec3.secrez as rezept13    
      from
         zusatz as zu    
      left join
         primary_rezepte as pri0 
            on pri0.prirezid = zu.professionspri0id 
            and pri0.charID = 19377857  
      left join
         primary_rezepte as pri1 
            on pri1.prirezid = zu.professionspri1id 
            and pri1.charID = 19377857  
      left join
         secondary_rezepte as sec0 
            on sec0.secrezid = zu.professionssec0id 
            and sec0.charID = 19377857  
      left join
         secondary_rezepte as sec1 
            on sec1.secrezid = zu.professionssec1id 
            and sec1.charID = 19377857  
      left join
         secondary_rezepte as sec2 
            on sec2.secrezid = zu.professionssec2id 
            and sec2.charID = 19377857  
      left join
         secondary_rezepte as sec3 
            on sec3.secrezid = zu.professionssec3id 
            and sec3.charID = 19377857  
      where
         zu.charID = 19377857
      Relax, you're doing fine.
      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

      Kommentar


      • #4
        normalisiert ist es schon, da ich noch viel mehr Infos auf der seite habe und das nur ein teil davon ist. mit * hab ich es auch probiert geht aber ebenso wenig, dies sah dann so aus:

        PHP-Code:
        $stmtz $pdo->prepare('SELECT *  from zusatz AS zu

        left join primary_rezepte as pri0 on pri0.prirezid = zusatz.professionspri0id and pri0.charID = :charID
        left join primary_rezepte as pri1 on pri1.prirezid = zusatz.professionspri1id and pri1.charID = :charID
        left join secondary_rezepte as sec0 on sec0.secrezid = zusatz.professionssec0id and sec0.charID = :charID
        left join secondary_rezepte as sec1 on sec1.secrezid = zusatz.professionssec1id and sec1.charID = :charID
        left join secondary_rezepte as sec2 on sec2.secrezid = zusatz.professionssec2id and sec2.charID = :charID
        left join secondary_rezepte as sec3 on sec3.secrezid = zusatz.professionssec3id and sec3.charID = :charID
        where zu.charID = :charID'
        ); 
        jedoch weiss ich dann auch nicht wie ich dies einbauen sollte:

        PHP-Code:
        pri0.prirez as rezept00pri1.prirez as rezept01sec0.secrez as rezept10sec1.secrez as rezept11sec2.secrez as rezept12sec3.secrez as rezept13 
        meine Kenntnisse sind nicht gerade die besten hierbei, daher ja auch der post als einsteiger

        Kommentar


        • #5
          ach so war es hier gemeint, sorry.

          ja hab es im phpmyadmin getestet und erstens läuft die abfrage ewig lange und wird dann mit nem 504 Gateway-Timeout

          Kommentar


          • #6
            Zitat von tera3yte Beitrag anzeigen
            zudem wenn du wirklich ALLLE Daten brauchst würde ich einfach "SELECT * FROM ... " machen.
            Auch wenn du alle Daten haben möchtest, solltest du auf SELECT * verzichten und alle Spalten explizit auflisten.

            Kommentar


            • #7
              Das ist mir klar, sollte jetzt nicht so klingen dass das eine gute Lösung ist.
              - Laravel

              Kommentar


              • #8
                hab ja nun nicht vor es mit * machen so wie man es oben sieht, jedoch klappt es nun immer noch nicht und weiss nicht wo mein fehler liegen könnte

                Kommentar


                • #9
                  Njo, schwer nachzuvollziehen. Kann ja keiner wissen was du da eigentlich machen willst.
                  Relax, you're doing fine.
                  RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                  Kommentar


                  • #10
                    Bau deine Query so weit zurück bis die Anfrage erfolgreich ist. Dann baust du nach und nach wieder ein paar Zeilen mehr rein und prüfst zwischen drin ob es immer noch klappt. So kannst du den Fehler in deiner Query ausfindig machen (sofern er in der Query ist)
                    - Laravel

                    Kommentar


                    • #11
                      nun ja wie ich oben schon beschrieben hatte, möchte ich aus der Tabelle "Zusatz" alle Daten haben und aus den Tabellen "Primary_Rezepte" & "Secondary_Rezepte" die Daten der Rezepte bekommen.

                      aus der Tabelle "Zusatz" -> charID und BerufID vergleichen mit den Tabellen "Primary_Rezepte" und "secondary_Rezepte"
                      wenn beides überein stimmt, möchte ich dann die dazugehörigen Rezepte ausgelesen bekommen

                      Kommentar


                      • #12
                        Du behauptest das wäre Normalisiert.

                        Ich behaupte du solltest dich nochmal mit Normalisierung auseinandersetzen.
                        Das geht ja auf keine Kuhhaut (wortwörtlich. Die Query ist so lang, die kriegst du auf keine Kuhhaut geschrieben)
                        Zitat von derwunner
                        "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

                        Kommentar


                        • #13
                          Ja das meine ich, da es noch 4 weitere tabellen gibt mit den weiteren Informationen für die seite. Das was in dieser tabelle steht, brauche ich so zusammen da diese so von einem Server abgerufen werden. Aber es geht eigentlich nun ja auch nicht darum ob es normalisiert ist oder nicht, sondern habe das thema ja erstellt, da der code nicht funktioniert. Da gerade aber auch probleme mit dem db-server bestehen, kann ich zur zeit eh nichts machen, ausser auf evtl. eine Hilfestellung warten die ich dann später wenn die db-server wieder erreichbar ist testen kann.

                          Kommentar


                          • #14
                            Code:
                            left join primary_rezepte as pri0 on pri0.prirezid = zu.professionspri0id and pri0.charID = 19377857
                            Dieses Join Konstrukt habe ich bisher noch nie gesehen...Jedoch wenn ich das laut Beschreibung richtig verstehe, ist da bei dir denitiv etwas falsch.
                            Durch das Join auf den Alias zu unter einsatz des WHERE ist die ganze Kiste doch so oder so über? (Wenn NF 3 löpp)
                            Code:
                            where zu.charID = 19377857'
                            Oder ich versteh die Beschreibung hinter dem JOIN ON AND nicht. Dann sorry für die Vermutung
                            Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen

                            Kommentar


                            • #15
                              Zitat von sorgonas Beitrag anzeigen
                              Ja das meine ich, da es noch 4 weitere tabellen gibt mit den weiteren Informationen für die seite. Das was in dieser tabelle steht, brauche ich so zusammen da diese so von einem Server abgerufen werden.
                              Wie die Daten aus der Datenbank abgerufen werden sollen ist für die Tabellenstruktur irrelevant. Und du solltest die Hinweise auf die nicht vorhandene Normalisierung ernst nehmen, früher oder später wirst du sonst vor Problemen stehen die du mit dem defekten Design nicht lösen kannst.

                              Aber es geht eigentlich nun ja auch nicht darum ob es normalisiert ist oder nicht, sondern habe das thema ja erstellt, da der code nicht funktioniert.
                              Dann solltest du vielleicht endlich mal schreiben was du unter "funktioniert nicht" verstehst (und nein, die Beschreibung dass PMA in einen 504er rennt ist keine Fehlerbeschreibung).

                              Da gerade aber auch probleme mit dem db-server bestehen, kann ich zur zeit eh nichts machen, ausser auf evtl. eine Hilfestellung warten die ich dann später wenn die db-server wieder erreichbar ist testen kann.
                              Ein lokaler Testserver ist immer erreichbar (und wenn nicht kann man selbst dafür sorgen dass er wieder erreichbar ist), verwende einen solchen, nicht die Produktiv-Datenbank beim Hoster.

                              Kommentar

                              Lädt...
                              X