Zeile und Zeile auslesen

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

  • Zeile und Zeile auslesen

    HI !

    Ich benutze MySQL zwar schon lange, aber immer nur einfach Abfrage und so weiter. Seit kurzem arbeite ich mit auch mit Joins (hört sich lächerlich an, aber es "ging" auch immer ohne )
    Da die ganze mit Joins ja nun so schön viel spart hab ich mir doch gleich gedacht, da könnt ich doch noch mehr sparen.
    also hatte ich jetzt bei meinem problem 3 Tabellen.
    ein gekürztes beispiel:
    1. Tab: Benutzer
    2. Tab: Firma
    3. Tab: Produkte

    Ich habe dann die ID des benutzers. über Join find ich dann auch alles über den benutzer und die firma raus, soweit kein Problem. nur möcht ich in einer spalte der Firma auf belibeig viele Zeilen in der produkttabelle verlinken.
    Hab das probiert, die ProduktIDs durch zeichen getrennt in einer zelle abzuspeichern und dann in PHP aufzusplitten und also zusätzlich die komplette produkttabelle auszulesen.

    Für mich stellt sich nun nur einfach die Frage, ob man
    a) zu der Zeile aus der Tab.Benutzer und zu der zeile aus der Tab.Firma alle Zeilen aus Produkte auslesen kann oder
    b) ob man noch im Query die ProduktIDs aus der Firmenzelle (evtl. durch andere Speichermethode als getrennt durch sonderzeichen) direkt in MySQL trennen kann, sodass er nur die zutreffenden produkte ausliest.

    Ich befürchte, dass weder a) noch b) geht, aber bei meinem in dieem bereich sehr begrenzten wissen, lass ich meine meinung lieber raus. bisher konnnte ich zudem Thema noch nix genaueres finden, also lags entweder dadran, dass ich ent weiß wonach ich suche, oder dass es net geht, also auf jeden Fall danke schonmal

  • #2
    Also, wenn ich dies recht verstanden habe, dann willst du alle drei Tabellen anhand der BenutzerID auslesen.
    Dies sollte mit zwei Join Abfragen eigentlich möglich sein...
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      Nein ich möchte den User und die Firma über ne ID auslesen mit Join, is ja gar kein Problem, nun ist abetr in der Tabelle Firma ne Spalte drin, die auf Produkte verweist (wie das könnte man noch ändern, bis auf die Trennung durch # oder | fiel mir noch nix ein, aber damit kann ich in MySQL ja net weiterarbeiten soweit ich weiß).
      der Thementiel sollte eigentlich heißen "Zeile und Zeilen auslesen"

      das war hauptsächlich meine Frage, ob es möglich ist, aus zwei Tabellen eine Zeile auszulesen und aus ner dritten im endeffekt alle und das in einem Query

      Kommentar


      • #4
        Code:
        SELECT 
          b.benutzer_id, b.benutzername,
          f.firma_id, f.firmenname,
          p.produkt_id, p.produktbezeichnung
        FROM benutzertabelle b
          INNER JOIN firmentabelle f
            USING (firma_id)
          LEFT OUTER JOIN produkttabelle p
            USING (firma_id)
        probier das mal

        voraussetzungen:
        • benutzer_id, firma_id und produkt_id sind primärschlüssel der jeweiligen tabellen, identifizieren also eindeutig genau einen datensatz
        • firma_id ist ebenfdalls in der benutzer- und der produkttabelle vorhanden und ermöglicht die zuordnung eines benutzers zu einer firma und eines produktes zu einer firma
        LEFT OUTER JOIN liefert dir im gegensatz zu INNER JOIN auch datensätze, die nur in der linken tabelle vorkommen, hier: firmen, für die noch keine produkte eingetragen sind
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          danke, aber Problem dabei:

          Tabelle Firma:

          FID | Name | Produkte
          1 | ABCD | 1#3#6

          Tabelle Produkte:

          PID | Name | DESC
          1 | Stuhl | aus Holz
          3 | Couch | nicht aus Holz

          ich wollte das eigentlich so machen, denn sehr viele Produkte haben viele FIrmen. dann würden zig einträge in der Produkttabelle doppelt sein.

          Kommentar


          • #6
            aber es würde die sache um einiges einfacher machen

            so wie du die firmentabelle momentan hast, wüsste ich keinen weg außer mit zwei abfragen

            sind in der produkttabelle nicht auch noch preise und akrtikelnummern und sowas drin? die wären bei dir ja dann auch für jede firma gleich?

            du hast imho 3 möglichkeiten
            1. du lässt es wie's is, liest die spalte Produkte der firmentabelle aus und verwendest das, was da drin steht als bedingung für ne zweite abfrage auf die produkttabelle
            2. du schmeißt die spalte Produkte raus und fügst die spalte FID in die produkttabelle ein (momentan von mir präferiert, da ich denke, dass die produkte nicht 10% identisch sein werden [preis, artikelnummer, ...])
            3. die schmeißt die spalte Produkte raus und machst statt dessen ne neue tabelle namens firmenprodukte, in der für jede FID die dazugehörigen PIDs aufnimmst (is imo immer noch besser als variante 1), allerdings hast dud ann ne tabelle mehr, die du in deinen join aufnehmen musst
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              danke
              3 hört sich mal gut an

              aber wieso schriebste "allerdings ne tabelle mehr" ?
              ne abfrage bruach doch viel mehr zeit als sonst irgendwas, also sollte man doch nach möglichkeit soviele abfragen wie möglich sparen oder irre ich mich da ? (versuche das nämlich gerade)

              Kommentar


              • #8
                so viel abfragen wie möglich sparen is richtig
                "ne tabelle mehr" bezog sich allerdings auf den vergleich von variante 3 und variante 2
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  achso ok, dann hab vielen dank

                  Kommentar

                  Lädt...
                  X