AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird embedded - Fehler bei coalesce
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird embedded - Fehler bei coalesce

Ein Thema von Neutral General · begonnen am 14. Jun 2013 · letzter Beitrag vom 14. Jun 2013
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Firebird embedded - Fehler bei coalesce

  Alt 14. Jun 2013, 10:56
Datenbank: Firebird embedded (Win32) • Version: 2.5.2 • Zugriff über: IBX / IBExpert
Hallo,

Ich habe folgende SQL:

SQL-Code:
SELECT
  keyword_entry.entry_type,
  text_lng.string as titel,
  keyword_entry.entry_value
FROM keyword
JOIN keyword_entry on (keyword_entry.keyword_id = keyword.id)
LEFT JOIN keyword_synonym on (keyword_synonym.keyword_id = keyword.id)
LEFT JOIN text on (text.id = keyword_entry.titel_text_id)
LEFT JOIN text_lng on (text_lng.text_id = text.id) and (text_lng.lng_id = :lng_id )
WHERE (coalesce(keyword_synonym.name, keyword.name, "") = lower(:keyword))
Wenn ich diese SQL in Delphi in eine IBQuery stecke und die Query öffne erhalte ich:

Zitat:
---------------------------
Programm
---------------------------
Unbekannter SQL-Datentyp (0)
---------------------------
OK
---------------------------
In IBExpert bekomme ich folgende Meldung:

Zitat:
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
Wenn ich das coalesce aus dem Code rausnehme, dann funktionierts bei beiden.
Woran liegt das?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#2

AW: Firebird embedded - Fehler bei coalesce

  Alt 14. Jun 2013, 11:09
Also erst mal als Hinweis: es ist immer schlecht, eine Spalte "Name" zu nennen...
Doch das ist wohl nicht dein Fehler... Ich denke der Fehler liegt einfach an den Anführungszeichen. Probiere mal einfache Anführungszeichen:
Code:
SELECT
  keyword_entry.entry_type,
  text_lng.string as titel,
  keyword_entry.entry_value
FROM keyword
JOIN keyword_entry on (keyword_entry.keyword_id = keyword.id)
LEFT JOIN keyword_synonym on (keyword_synonym.keyword_id = keyword.id)
LEFT JOIN text on (text.id = keyword_entry.titel_text_id)
LEFT JOIN text_lng on (text_lng.text_id = text.id) and (text_lng.lng_id = :lng_id )
WHERE (coalesce(keyword_synonym.name, keyword.name, '') = lower(:keyword))
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Firebird embedded - Fehler bei coalesce

  Alt 14. Jun 2013, 11:13
Hallo,

Warum ist es schlecht ein Feld "Name" zu nennen? (In Delphi kann ichs noch eher verstehen)
Ich hätte es niemals geglaubt aber mit den anderen Anführungszeichen geht es tatsächlich...
Das ist sehr seltsam weil ich auf der Arbeit auch Firebird benutze und es dort noch NIE einen Unterschied gemacht hat ob man '' oder "" benutzt hat
Der einzige Unterschied ist dass wir dort eine Dialect 1 Datenbank haben und ich privat Dialect 3 benutze. Kann es das sein?

Danke auf jeden Fall
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#4

AW: Firebird embedded - Fehler bei coalesce

  Alt 14. Jun 2013, 11:21
Naja, es gibt reservierte Wörter, die man möglichst nicht als Spaltennamen verwenden sollte...
"Name" gehört zwar (noch) nicht dazu, aber bei anderen Datenbanksystemen ist "Name" mittlerweile schon reserviert (z.B. Oracle)
Wenn du also mal irgendwann die Datenbank wechseln möchtest, hast du hier ein Problem.

Man kann allerdings auch reservierte Wörter verwenden, dann muss man diese in Anführungszeichen setzen.
Ist eine Spalte also in Anführungszeichen gesetzt, wird der Spaltenname einfach so übernommen, auch wenn sich dahinter "normalerweise" z.B. eine Procedure oder ein reservierter Name verbirgt.
Und genau das hat bei dir jetzt diesen Fehler verursacht. Im Prinzip gab es die Spalte "" nicht.

Ob das bei Dialect 1 anders ist, kann ich dir nicht sagen, ich verwende nur Dialect 3.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Firebird embedded - Fehler bei coalesce

  Alt 14. Jun 2013, 11:57
Okay, die Begründung mit den Anführungszeichen ist nachvollziehbar.
Es scheint als wäre Dialect 3 generell etwas strenger. In Dialect 1 geht z.B. folgendes ohne Probleme:

SQL-Code:
SELECT
  lkz.lkz
FROM lkz
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (14. Jun 2013 um 11:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Firebird embedded - Fehler bei coalesce

  Alt 14. Jun 2013, 21:43
nimm einfache Anfürungszeichen für Stringkonstanten und DIalekt 3, Dialekt 1 ist evtl demnächst nicht mehr verfügbar
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung

Geändert von IBExpert (14. Jun 2013 um 21:47 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:39 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