[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2006
    Beiträge
    2.114

    SQL order by Verständnisfrage

    Hallo *all,
    ich habe hier 2 Dateien, einmal Adressen und einmal E-Mail. Verknüpft mit einem left join.

    Ich wollte jetzt in der Übersicht alle Sätze mit E-Mail Adresse als erstes sehen, aber die Orderfunktion greift nicht.

    SELECT T02.A4MAIL, T02.A4DFJN, T01.ADKTO, T01.ADNAM1, T01.ADNAM2,
    T01.ADNAM3, T01.ADSTR, T01.ADLND, T01.ADPLZ, T01.ADORT, T01.ADKNAM,
    T01.ADSA04, T01.ADSA05 FROM ADR01PF T01 left join
    ADR04PF T02 on T02.A4KTO = T01.ADKTO WHERE adsts = 0 and
    adfa = 1 and adsa05 = 32 ORDER BY a4mail

    Warum?

    GG

  2. #2
    Registriert seit
    May 2002
    Beiträge
    1.121
    weil eine LEERE Email-Adresse kleine wie eine gefüllte EMail-Adresse ist ...

  3. #3
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Du hast Recht, mir war erst jetzt aufgefallen das in den vermeintlichen Leeren Sätzen am Schluß ein Bindestrich stand, deswegen waren die E-Mails in der Mitte.
    Also:
    Am Anfang die Leeren, in der Mitte die richtigen und am Schluß die mit dem -.

    Ich liebe gepflegte Stammdaten.....

    GG

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Probier mal mit:

    ... ADR01PF T01 left join ADR04PF T02 on T02.A4KTO = T01.ADKTO and T02.A4MAIL<>'' WHERE ...

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dann kannst du den "Left join" auch gleich durch "Inner join" ersetzen, da eine solche Abfrage (egal ob in "Join .. on" oder "where ...") NULL-Werte nicht zulässt.

    Ein Left Join will aber wohl auch Daten, die eben auf der rechten Seite nicht vorhanden, also NULL sind.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Hab gerade alle 3 unter V5R4 ausprobiert und ein "left join ... on" bringt mir hier mit dieser zusätzlichen Bedingung dennoch mehr Datensätze als ein "inner join ... on" oder ein "join ... where".

  7. #7
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Hallo *all,
    nur zum Verständniss: Ich wollte schon alle Kunden mit und ohne E-Mail Adresse, allein das es Datensätze mit - gab hatte ich nicht gesehen und mich deswegen über die Sortierung gewundert, ansonsten hätte ich direkt ein desc gemacht wenn der komplette Block am Ende gestanden hätte.

    GG

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Die Datensätze mit - in der Anzeige (= NULL-Wert) sind die Kunden, die keinen Datensatz mit einer Emailadresse besitzen (keinen passenden Datensatz in Datei ADR04PF). Für genau die brauchst du ja den "left join".

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Versuch mal folgendes:

    Code:
    SELECT T02.A4MAIL, T02.A4DFJN, T01.ADKTO, T01.ADNAM1, T01.ADNAM2,
    T01.ADNAM3, T01.ADSTR, T01.ADLND, T01.ADPLZ, T01.ADORT, T01.ADKNAM,
    T01.ADSA04, T01.ADSA05 FROM ADR01PF T01 left join
    ADR04PF T02 on T02.A4KTO = T01.ADKTO WHERE adsts = 0 and
    adfa = 1 and adsa05 = 32 
    ORDER BY NULLIF(a4mail, '  '); 
    Durch diese Order By Anweisung wird A4MAIL für die Sortierung in einen NULL-Wert konvertiert, sofern keine A4MAIL angegeben wurde.
    NULL-Werte werden in der Sortierung immer am Ende aufgelistet.
    Damit sollten die Sätze ohne eMail-Adresse am Ende stehen.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  10. #10
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Hallo Birgitta,
    danke sieht gut aus

    GG

Similar Threads

  1. SQL Sensitiver Cursor Probleme
    By Rincewind in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-12-06, 13:58
  2. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  3. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •