Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Spalte aus Datenbank auslesen

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.08.2004
    Beiträge
    72

    Spalte aus Datenbank auslesen

    Hallo,

    ich habe in meiner Datenbank eine Tabelle mit verschiedenen Produkten. Jedem Produkt ist ein Produkttyp zugeordnet, z.B.:


    ID Prod. Produkttyp
    01 Prod1 TypA
    02 Prod2 TypA
    03 Prod3 TypB


    Ich möchte nun eine Abfrage mit PHP machen, die mir die verschiedenen Produkttypen ausliest und mir auflistet (ohne dass "TypA" zweimal auftaucht).

    Das gewünschte Ergebnis soll also so aussehen:


    TypA
    TypB


    Wie kann ich das realisieren?

  2. #2
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo,

    das scheint mir eigentlich ein Datenbank Problem und kein PHP Problem... sollte dem so sein verschiebe ich das Thema später ins Datenbank Forum.

    Zu deiner Frage (ich nehme an du benutzt eine MySQL Datenbank):
    Code:
    SELECT Produkttyp FROM tabelle GROUP BY Produkttyp
    Gruß,

    Gaert



  3. #3
    Registrierter Benutzer
    Registriert seit
    25.08.2004
    Beiträge
    72
    Hey Gaert,

    vielen Dank, genau das habe ich gesucht!

    Tja, ich wusste nicht, ob ich die Abfrage mit PHP nachbearbeiten muss.

    Gruß Korrix

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Hallo,

    1. ich würde mir über das Datenbankdesign gedanken machen.

    Eigentlich sollte es eine eigene Tabelle mit Produkttypen geben, die du über Fremdschlüssel mit der Artikeltabelle verbindest.

    2.
    Code:
    SELECT DISTINCT produkttyp FROM tabelle;
    ist die in diesem Falle sinnvollere Lösung, auch wenn das andere auch funzt.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.08.2004
    Beiträge
    72
    klar, aber die ganze Tabelle kommt aus einer Exceltabelle, die einfach importiert wird.

    In diesem Fall missbrauche ich die Datenbank zur erweiterten Tabellenanzeige ;-)

  6. #6
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    Zitat Zitat von Turbohummel
    Hallo,

    Code:
    SELECT DISTINCT produkttyp FROM tabelle;
    ist die in diesem Falle sinnvollere Lösung, auch wenn das andere auch funzt.
    aus welchem grund hälst du das für die bessere lösung?
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  7. #7
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Na ja, syntaktisch ist "select distinct" schon glatter. Also aus Sicht der SQL-Syntax und für Wartbarkeit bei großen Sachen würde ich mich auch erst mal dafür entscheiden. Allerdings:

    Ich habe beides mal an einer kurzen Tabelle getestet. Und bin erschrocken!
    Code:
    barrett=# explain analyze select distinct basisbefund from histotyp;
                                                         QUERY PLAN                                                     
    --------------------------------------------------------------------------------------------------------------------
     Unique  (cost=70.69..75.38 rows=320 width=19) (actual time=12.836..16.953 rows=195 loops=1)
       ->  Sort  (cost=70.69..73.03 rows=938 width=19) (actual time=12.832..13.050 rows=775 loops=1)
             Sort Key: basisbefund
             ->  Seq Scan on histotyp  (cost=0.00..24.38 rows=938 width=19) (actual time=0.013..1.157 rows=775 loops=1)
     Total runtime: 17.155 ms
    (5 Zeilen)
    gegenüber

    Code:
    barrett=# explain analyze select basisbefund from histotyp group by basisbefund;
                                                      QUERY PLAN                                                  
    --------------------------------------------------------------------------------------------------------------
     HashAggregate  (cost=26.73..26.73 rows=320 width=19) (actual time=5.010..5.195 rows=195 loops=1)
       ->  Seq Scan on histotyp  (cost=0.00..24.38 rows=938 width=19) (actual time=0.009..0.683 rows=775 loops=1)
     Total runtime: 5.309 ms
    (3 Zeilen)
    Das ist gerade mal 1/3 der Ausführungszeit!
    Für mich heißt das: So eine Anfrage teste ich erst mal, bevor ich mich auf eins festlege. (Hier war es Postgres. Die Ergebnisse können stark schwanken je nach rdbms)
    Das Ziel ist das Ziel.

  8. #8
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    ich hab mal vor vielen jahren gelernt, dass distinct ein performancekiller ist. offensichtlich hat sich daran nix geändert. ...und schönheit des codes liegt doch immer im auge des betrachters...
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  9. #9
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Hallo,

    also ich hab das daraufhin jetzt auch mal mit maxdb getestet. Ich konnte keinen Performanceunterschied zur Group-By-Variante feststellen, selbst bei 10000 Ergebniszeilen.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •