AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komplexe Abfrage

Ein Thema von Ghostwalker · begonnen am 18. Jun 2020 · letzter Beitrag vom 23. Jun 2020
Antwort Antwort
Seite 2 von 2     12   
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#11

AW: Komplexe Abfrage

  Alt 19. Jun 2020, 18:11
Ein Komma darf es nur geben, wenn es auch ein AS gibt, sonst ist das Komma falsch.

Erleichtert einfach die optische Fehlererkennung und macht (für meine Begriffe) die SQLs insgesamt leichter lesbar.

AS gesehen: Ist dahinter ein Spaltenname.
Kein AS gesehen: Ist dahinter ein Tabellenalias.

Hinter AS in der Zeile folgt immer ein Komma, außer beim letzten AS.
Ansonsten ist ein Komma eher
Achso: Habe mir angewöhnt in SQLs den Spalten immer eine eigene Zeile zu gönnen und nicht "endloslange" Spaltenlisten in einer Zeile zu "verbraten".
Macht's für mich halt lesbarer und das einfügen oder entfernen von Spalten an der richtigen Stelle im Statement wird auch irgendwie einfacher.

Aber das ist halt auch nur 'ne sehr subjektive Ansicht, die niemand teilen muss (aber durchaus darf ).
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Komplexe Abfrage

  Alt 19. Jun 2020, 19:06
Ein Komma darf es nur geben, wenn es auch ein AS gibt, sonst ist das Komma falsch.

Erleichtert einfach die optische Fehlererkennung und macht (für meine Begriffe) die SQLs insgesamt leichter lesbar.

AS gesehen: Ist dahinter ein Spaltenname.
Kein AS gesehen: Ist dahinter ein Tabellenalias.

Hinter AS in der Zeile folgt immer ein Komma, außer beim letzten AS.
Ansonsten ist ein Komma eher
Achso: Habe mir angewöhnt in SQLs den Spalten immer eine eigene Zeile zu gönnen und nicht "endloslange" Spaltenlisten in einer Zeile zu "verbraten".
Macht's für mich halt lesbarer und das einfügen oder entfernen von Spalten an der richtigen Stelle im Statement wird auch irgendwie einfacher.

Aber das ist halt auch nur 'ne sehr subjektive Ansicht, die niemand teilen muss (aber durchaus darf ).
Nochmal..das hat nix mit AS zu tun.

SELECT c.country_id AS countryId,
c.country_shortcode AS ISOShort,
c.country_longcode AS ISOLong,
l.lang_id AS LangId,
cn.cn_name AS countryName,
rn.reg_name AS regionName,
sn.srn_name AS subregionName
FROM countries c,
languages l
LEFT JOIN country_names cn ON cn.cn_cid = c.country_id AND cn.cn_lang = l.lang_id,
LEFT JOIN region_names rn ON rn.reg_id = c.country_region AND rn.reg_lang = l.lang_id,
LEFT JOIN subregion_names sn ON sn.sr_id = c.country_subregion AND sn.srn_lang = l.lang_id
WHERE (l.lang_code = "en")
ORDER BY c.country_id;

Die rot markierten waren das Problem. Und an der Stelle kommt kein AS.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#13

AW: Komplexe Abfrage

  Alt 19. Jun 2020, 19:19
Zitat von Ghostwalker:
Die rot markierten waren das Problem. Und an der Stelle kommt kein AS.
Eben und darum hat es ja mit dem AS zu tuen.

Da steht kein AS und deshalb ist das Komma falsch!

Also: Ein Komma darf es nur geben, wenn es auch ein AS gibt, sonst ist das Komma falsch.

Oder: Kein AS = Kein Komma

Oder
Delphi-Quellcode:
for Zeile := 0 to SQL.Count - 1 do begin
  if (pos(' AS ',SQL[Zeile]) = 0) and (pos(',',SQL[Zeile]) <> 0) then begin
    Raise Format('In Zeile %d des SQL-Statements ist ein Komma zuviel.',[Zeile]);
  end;
end;
oder so ähnlich ungefähr
  Mit Zitat antworten Zitat
DasWolf

Registriert seit: 7. Jun 2016
76 Beiträge
 
Delphi 10.1 Berlin Professional
 
#14

AW: Komplexe Abfrage

  Alt 22. Jun 2020, 16:03
AS gesehen: Ist dahinter ein Spaltenname.
Kein AS gesehen: Ist dahinter ein Tabellenalias.
Das ist vielleicht für Dich selbst so festgelegt.

Laut Deiner Definition soll also folgendes möglich sein?

LEFT JOIN country_names AS cn ON cn.cn_cid = c.country_id AND cn.cn_lang = l.lang_id,
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.079 Beiträge
 
Delphi 12 Athens
 
#15

AW: Komplexe Abfrage

  Alt 22. Jun 2020, 16:12
Und das hat mit den Kommas am Ende der Joins...was zu tun ? Die waren nämlich die Ursache des Problems
Mit dem AS dazwischen fällt es eher auf, ob da ein Komma fehlt, bzw. ob da wirklich nichts reingehört.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#16

AW: Komplexe Abfrage

  Alt 23. Jun 2020, 09:42
AS gesehen: Ist dahinter ein Spaltenname.
Kein AS gesehen: Ist dahinter ein Tabellenalias.
Das ist vielleicht für Dich selbst so festgelegt.

Laut Deiner Definition soll also folgendes möglich sein?

LEFT JOIN country_names AS cn ON cn.cn_cid = c.country_id AND cn.cn_lang = l.lang_id,
Ist denn country_names ein Spaltenname, dessen Alias man mit oder ohne As angeben kann?

Also nochmal ein Versuch:

Ein Komma darf es nur geben, wenn es auch ein AS zur Benennung eines Alias zu einem Spaltennamen gibt, ansonst könnte das Komma falsch sein, vorausgesetzt, dass das AS ist richtig.

Wenn ich z. B. eine Tabelle habe, die AS heißt oder einen Spaltenalias, den ich AS nenne oder eine Spalte, die AS heißt, könnte durchaus die Möglichkeit bestehen, dass meine Regel, die ich nur zur Vereinfachung der Fehlersuche nutze, nicht zwingend 100%ig zutreffend ist.

Frei nach dem Motto: Ausnahmen bestätigen die Regel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz