Problem bei Suche

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

  • Problem bei Suche

    Ich will gerade eine Suche machen, die mehrere Tabellen durchsuche. Bei mir Hardware_Types, Hardware, Abteilung usw

    Jetzt weiß ich nicht, wie ich das alles Verknüpfen soll. Ich hab jetzt mal so angefangen.

    PHP-Code:
    $sqlab " select a.name, ht.type_pk, ht.type_desc, ht.HD, ht.graphics, ht.cd_dvd, ht.removable, ht.soundcard, ht.speakers, ht.processor, ht.RAM, ht.other1, ht.other2, h.pk_asset, h.type, h.serial_num, h.userID, h.o_s, h.sparePart, h.abteilung_fk, h.hostname from hw_types as ht, hardware as h, Abteilung as a ";
       
    $sqlab .= " where ht.type_desc = '$ug' OR ht.HD = '$ug' OR ht.graphics = '$ug' OR ht.cd_dvd = '$ug' ";
       
    $sqlab .= " OR ht.removable = '$ug' OR ht.soundcard = '$ug' OR ht.speakers = '$ug' OR ht.processor ='$ug' ";
       
    $sqlab .= " OR ht.RAM = '$ug' OR ht.other1 = '$ug' OR ht.other2 ='$ug' OR h.type='$ug' OR h.serial_num ='$ug' ";
       
    $sqlab .= " OR h.userID = '$ug' OR h.o_s= '$ug' OR h.sparePart = '$ug' OR a.name = '$ug' OR h.hostname = '$ug' ";
       
    $sqlab .= " AND h.abteilung_fk=a.id_abteilung order by h.abteilung_fk "
    Aber irgendwie funktioniert das nicht.
    bis jetzt gibt er egal, was ich eingebe alles aus.

    z.B. bei Abteilung. In Hardware steht nur der fremdschlüssel drinnen (0,7,16 z.B.) und in Abteilung steht die ID und der Name. Wenn ich jetzt Abteilung eingebe, dann muss ich vorerst nur nach dem Namen in Abteilung selber suchen. Dann nehme ich die ID davon und sage, er soll alles ausgeben, wo die ID= fremdschlüssel ist??

    Aber irgendwie steh ich auf dem Schlauch. Ich weiß nicht, wie ich das machen soll

  • #2
    mach dich mal mit dem Thema Joins vertraut, hier im Forum mal suchen, ansonsten auch mal hier schauen:
    http://www.sqlcourse.com
    http://www.sqlcourse2.com

    gruss

    Kommentar


    • #3
      PHP-Code:

      SELECT a
      .namea.id_abteilungh.fk_abteilungFROM Abteilung as a LEFT JOIN hardware as h ON a.id_abteilung=h.fk_abteilung 
      soweit müsste das stimmen, oder? aber wo und wie bring ich jetzt den vergleich mit '$ug' ein und wie schreib ich das, dass er dann die richtige nummer zum vergleich hernimmt?

      Kommentar


      • #4
        ich komm hier nicht weiter. Ich kapier das nicht.

        Kommentar


        • #5
          Hier geht es schon an, was ist jetzt da falsch?

          PHP-Code:
           $sqlab " select a.name, a.id_abteilung, h.abteilung_fk from hardware as h, Abteilung as a 
             where a.name='
          $ug' order by h.abteilung_fk "
          Es wird 6 mal Fertigung ausgegeben. Wie kann das sein, wenn es nur einmal in Abteilung drinnensteht?

          Kommentar


          • #6
            6 mal die Ausgabe von Fertigung kommt glaube ich daher, dass ich 6 Einträge in Hardware habe, aber was hat das damit zu tun?

            Kommentar


            • #7
              Also, ich habs jetzt so gelöst

              PHP-Code:
               $sqlab " SELECT a.name, a.id_abteilung, h.abteilung_fk FROM Abteilung as a LEFT JOIN hardware as h ON            a.id_abteilung=h.abteilung_fk WHERE a.name='$ug' "

              Kommentar


              • #8
                siehst du, es geht doch! ein bisschen probieren und irgendwann gehts

                gruss

                Kommentar


                • #9
                  zu früh gefreut!
                  Jetzt wollte ich das ganze mit 3 Tabellen machen, aber da wird folgender Fehler

                  Error: You have an error in your SQL syntax near 'LEFT JOIN hw_types as ht ON h.type=ht.type_pk WHERE a.name='Fertigung' OR h.type' at line 1


                  geworfen.

                  hier ist mein code:
                  PHP-Code:
                  $sqlab " SELECT a.name, a.id_abteilung, ";
                     
                  $sqlab " h.pk_asset, h.type, h.serial_num, h.userID, h.o_s, h.sparePart, h.abteilung_fk, h.hostname, ";
                     
                  $sqlab " ht.type_pk, ht.type_desc, ht.HD, ht.graphics, ht.cd_dvd, ht.removable, ht.soundcard, ht.speakers, ht.processor, ht.RAM, ht.other1, ht.other2 ";
                     
                  $sqlab " FROM Abteilung as a LEFT JOIN hardware as h ON a.id_abteilung=h.abteilung_fk ";
                     
                  $sqlab " LEFT JOIN hw_types as ht ON h.type=ht.type_pk WHERE a.name='$ug'"
                  Kann mir bitte einer weiterhelfen, ich finde den Fehelr nicht.

                  Kommentar


                  • #10
                    Also ... das ist ja wohl definitiv nicht Dein Quellcode

                    Die Fehlermeldung lautet doch:
                    WHERE a.name='Fertigung' OR h.type'

                    Im Quellcode sehe ich aber nix von "OR h.type" ... ??
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      Sorry, da hatte ich das oder noch drinnen, weil ich dachte, vielleicht geht es so

                      Hier die Fehlermeldung ohne OR
                      Error: You have an error in your SQL syntax near 'LEFT JOIN hw_types as ht ON h.type=ht.type_pk WHERE a.name='Fertigung'' at line 1

                      Kommentar


                      • #12
                        Also ich könnte mir vorstellen das ihm das Schlüsselwort Type nicht gefällt:

                        probier's mal mit Backticks für Type => `type` oder `h.type`
                        carpe noctem

                        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                        Kommentar


                        • #13
                          Nö, das wars leider nicht.

                          Kommentar


                          • #14
                            wenn man .= nicht macht, kanns nicht funktionieren

                            Kommentar

                            Lädt...
                            X