Ankündigung

Einklappen
Keine Ankündigung bisher.

SELECT LEFT JOIN start, limit Anzahl der Datensätze

Einklappen

Neue Werbung 2019

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

  • SELECT LEFT JOIN start, limit Anzahl der Datensätze

    Hallo Zusammen,
    blicke da gerade etwas nicht.und komme nicht dahinter.
    Selectiere aus einer Tabelle (A) alle Datensätze und möchte aus einer anderen Tabelle (B) mit LEFT Join zurgehörige Daten selectieren.
    zum 'Blättern' gibt es start und limit.
    Aber igendwie begrenzt meine Query die Anzahl der Datensätze auf Anzahl aus A minus Anzahl aus A für die es keine Daten in B gibt.
    Oder anders, es werden nur die Datensätze aus A selectiert, die auch zugehörige Daten in B haben, Anzahlmäßig.
    A= ADR = adressen
    B= EWB =ewbs
    Was mach ich falsch??
    DANKE!!
    Hier die Query:
    PHP-Code:

                $query
    ="
                    SELECT ADR.index, ADR.Name, ADR.Vorname, ADR.Land, ADR.PLZ, ADR.Ort, ADR.Strasse,
                    EWB.ewbnr
                    FROM adressen  AS ADR
                    LEFT JOIN
                    ewbs AS EWB ON EWB.adressinnr = ADR.index
                    LIMIT "
    .$start.",".$limit."                              
                "
    ;
            } 

  • #2
    Hä?

    Code:
    test=# create table a as select * from generate_series(1,10) id;
    SELECT 10
    test=*# create table b as select (random()*10)::int as a_id from generate_series(1,5) s;
    SELECT 5
    test=*# select * from a left join b on a.id=b.a_id;
     id | a_id
    ----+------
      1 |    1
      2 |     
      3 |    3
      4 |     
      5 |     
      6 |    6
      7 |     
      8 |    8
      9 |     
     10 |     
    (10 Zeilen)
    test=*# select * from a left join b on a.id=b.a_id offset 3 limit 3;
     id | a_id
    ----+------
      4 |     
      5 |     
      6 |    6
    (3 Zeilen)
    erwartest Du was anderes? Bekommst Du was anderes?
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      OK, erstmal vielen Dank !!
      in der Tabelle B stehen Daten, die zu Datensätzen in der Tabelle A gehören.
      Nicht alle Satensätze n der Tabelle A haben Daten in der Tabelle B.
      Ich möchte aber alle Datensätze aus der tab a bekommen UND zusätzlich die daten aus der tab B die zu den datwen aus A passen.
      Wenn für einen Datensatz in der tab. A keine Daten ind er Tabelle B exisiteren, wird der Datensatz nicht angezigt.
      Soll aber.

      A.
      ID | daten
      1 | bla1
      2 | bla2
      3 | bla3
      4 | bla4
      5 | bla5
      6 | bla6
      7 | bla7

      B,
      ID |
      1 | YUP1
      5 | YUP5
      7 | YUP7

      Match ist jetzt nur 1,5,7
      1>bla1>YUp1
      5>bla5>YUp5
      7>bla7>YUp7

      SOLL ist:
      1>bla1>YUp1
      2>bla2
      3>bla3
      4>bla4>
      5>bla5>YUp5
      6>bla6>
      7>bla7>YUp7

      Kommentar


      • #4
        Irgend etwas machst du falsch.
        Ich habe dir mal ein Fiddle gebastelt mit 4 verschiedenen JOIN Typen. Schau dir mal das Ergebnis an.
        Du brauchst das Dritte davon.

        Kommentar


        • #5
          Zitat von Homero Beitrag anzeigen
          in der Tabelle B stehen Daten, die zu Datensätzen in der Tabelle A gehören.
          Nicht alle Satensätze n der Tabelle A haben Daten in der Tabelle B.
          Ich möchte aber alle Datensätze aus der tab a bekommen UND zusätzlich die daten aus der tab B die zu den datwen aus A passen.
          Wenn für einen Datensatz in der tab. A keine Daten ind er Tabelle B exisiteren, wird der Datensatz nicht angezigt.

          Genau das macht mein Beispiel. Wenn das bei Dir nicht geht, gibt es 2 Möglichkeiten:
          • Du machst was falsch
          • Deine DB macht was falsch


          Bei MySQL ist der zweite Punkt nicht auszuschließen, ich denke aber, der erste Punkt trifft zu.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            SUPI,
            vielen Dank für die Mühe und die Ausführungen!.
            Werde mich am WE darüber her machen. Dachte, ich hätte die Variante drei aus dem Fiddle , bzw, das Beispiel. Ich denke mal auch, das ich da was falsch mache. ;(
            Vielen Dnak erst mal...
            Holger

            Kommentar


            • #7
              Hallo Zusammen,
              klappt ausgezeichent. Danke serh!
              gabe das gleich wetierverwendet und...
              was man nich im Kopf hat, muss in den Fingern haben...
              PHP-Code:
              SELECT a.ida.datenb.daten
              FROM 
              `a`
              LEFT JOIN b ON b.id a.id
              ORDER BY a
              .id
              Wenn in der Tabelle b die ID mahrfach auftritt, enthällt das Ergebniss ALLE auftretenden Einträge. LOGISCH. Fleissiges tippen und auspobieren, bis zur Erläuchtung :

              PHP-Code:
              SELECT a.ida.datenb.daten
              FROM 
              `a`
              LEFT JOIN b ON b.id a.id
              GROUP BY a
              .id
              liefert dann alle a.ID, und wenn dei a.ID auch einen Eitnrag in b.ID hat auch das. :)
              vielen Dank für die Mühe!
              Funktioniert jetzt auch ausgezeichnet.
              Die Snipets hab ich mir gespeichert.
              Sonnige Wochenende

              Kommentar

              Lädt...
              X