Ankündigung

Einklappen
Keine Ankündigung bisher.

as in where Abfrage?

Einklappen

Neue Werbung 2019

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

  • as in where Abfrage?

    Hallo,

    habe folgendes Problem.
    In einer Datenbank wurden unter der Tabelle "Verbindung" folgendes eingetragen: Tel Privat, Tel Geschäft, Mobilfunk, Fax, e-mail,...
    In der Spalte "Verb.Typ" erfolgt die Zuordnung mittels der Variablen 1,2,3,4,...

    Ich kann nun eine Tabelle erstellen, in dem ich immer eine Verbindung Abfrage, z.B. Tel Privat.
    Wie kann ich aber eine Tabelle mit mehreren Spalten ( Tel Privat, Tel Geschäft, Mobilfunk) erstellen?
    Vielleicht kann mir da jemand meinen Quellcode erweitern. Hatte versucht der Where Abfrage mit "AS" einen Variable zuzuweisen, funktioniert aber nicht.

    PHP-Code:
    # T1.VERB_TYP = 1 (Tel privat), 2 ( Mobil privat), 3 (FAX), 4 (emailStandard), 5 (Tel Geschäft), 1001 ( email 2)
            # T2.status = 1 (Aktiv), 2 (Passiv), 3 (Fördernd), 4 (Ausgetreten), 5 (Altersabteilung), 6 (Jugend), 7 (Verstorben, 1001 (Datenpflege)
            
         
            
    $abfrage "SELECT T1.VERBINDUNG, T2.Nachname, T2.Vorname, T2.Status
            From T1 join T2 using (ID)
            where T1.VERB_TYP in (1,2,5) and T2.status=1
            order by T2.Nachname asc, T2.Vorname asc
            "

    Danke.

  • #2
    Zitat von wepsi Beitrag anzeigen
    Hallo,

    habe folgendes Problem.
    Beschreib es bitte genauer, Deine Tabellen kann man nur erahnen und ich erahne, das diese falsch sind.


    Code:
    test=*# select * from leute ;
     id | name
    ----+------
      1 | max
      2 | susi
    (2 rows)
    
    Time: 0,182 ms
    test=*# select * from verb_typ ;
     id |   name
    ----+----------
      1 | festnetz
      2 | handy
      3 | email
    (3 rows)
    
    Time: 0,236 ms
    test=*# select * from connections ;
     leute_id | verbindung |     detail
    ----------+------------+-----------------
            1 |          1 | 12345
            1 |          3 | max@invalid.org
            2 |          2 | 666-66-666
    (3 rows)
    
    Time: 0,166 ms
    test=*# select leute.*, c1.detail as handy, c2.detail as email, c3.detail as festnetz  from leute left join connections c1 on (c1.leute_id=leute.id) and c1.verbindung=2 left join connections c2 on c2.leute_id=leute.id and c2.verbindung=3 left join connections c3 on c3.leute_id=leute.id and c3.verbindung = 1;
     id | name |   handy    |      email      | festnetz
    ----+------+------------+-----------------+----------
      1 | max  |            | max@invalid.org | 12345
      2 | susi | 666-66-666 |                 |
    (2 rows)
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Hallo,

      anbei ein Ausschnitt, wie die Tabellen aussehen
      Angehängte Dateien

      Kommentar


      • #4
        Zitat von wepsi Beitrag anzeigen
        Hallo,

        anbei ein Ausschnitt, wie die Tabellen aussehen
        Dann war meine Ahnung ja richtig. Und ja: bitte keine Bilder, das hier ist ja kein Katzen-Forum.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Stichwort Normalisierung. Was akretschner hier sehen möchte ist die dritte Normalform.

          Kommentar


          • #6
            Hallo, danke, aber für was steht denn c1, c2, c3?

            Kommentar


            • #7
              Tabellenalias; Abkürzung

              Kommentar


              • #8
                Wie gesagt Anfänger,

                so wie ich die Tabellen lese, ist doch c1, c2 und c3 immer die gleiche Tabelle "connections". oder nicht?

                Kommentar


                • #9
                  Zitat von rkr Beitrag anzeigen
                  Tabellenalias; Abkürzung
                  Genau. Anzumerken wäre noch, daß man entweder via Unique Constraints verhindert, daß einer Person 2 oder mehr z.B. Festnetznummern zugeordnet werden können, oder daß man in der Abfrage dann aggregiert / gruppiert.
                  PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                  Kommentar


                  • #10
                    Ja. Bitte beachte, dass akretschmer kommentarlos SQL-Code einer meist fremden SQL-Datenbank (PostgreSQL) postet. PostgreSQL ist zwar als OpenSource-Datenbank MySQL in vielen Punkten klar überlegen (aber nicht in allen) ist aber dramatisch seltener im Einsatz.

                    Kommentar


                    • #11
                      Zitat von rkr Beitrag anzeigen
                      PostgreSQL ist zwar als OpenSource-Datenbank MySQL in vielen Punkten klar überlegen (aber nicht in allen)
                      Wo nicht?
                      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                      Kommentar


                      • #12
                        Wir sprachen kürzlich erst drüber. Non-Standard-Additions, die evtl. bald den Weg in Postgres finden...

                        Kommentar


                        • #13
                          Zitat von rkr Beitrag anzeigen
                          Wir sprachen kürzlich erst drüber. Non-Standard-Additions, die evtl. bald den Weg in Postgres finden...
                          Ja, aber sorry, nur weil MySQL etwas kann, was nicht in der SQL-Doku steht, ist es doch nicht besser, als eine DB, die es nicht kann. Das ist kein ersthafter Vergleich, und Dir ist sicher auch bekannt, daß PG erheblich mehr Non-Standard-Features als MySQL hat.

                          Wichtiger ist, finde ich, daß, was die SQL-Specs vorgeben zu realisieren. Und da patzt MySQL nun mal massiv. Entweder fehlen Features (wie Window-Funktionen) oder trivialste Dinge werden schlicht falsch gemacht (Check-Constraints, Group by und Aggregationen).
                          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                          Kommentar


                          • #14
                            Ja. Das ist die Diskussion die wir an anderer Stelle um PHP herum führen. Jetzt haben wir PHP-NG und Hack. Und ganz ehrlich? PHP ist im Vergleich mit "richtigen" Sprachen eine designtechnische Katastrophe. Da machens Hack und NG auch nicht mehr besser. Die Gestalt der Argumente, die du gegen MySQL ins Feld führst, treffen in einer etwas anderen Dimension um ein vielfaches mehr auf PHP zu. PHP und MySQL gehören zusammen wie Pisse und Kacke

                            Kommentar

                            Lädt...
                            X