AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Innerhalb eines select's prüfen ob Spalte existiert?
Thema durchsuchen
Ansicht
Themen-Optionen

Innerhalb eines select's prüfen ob Spalte existiert?

Ein Thema von thabaker · begonnen am 7. Sep 2007 · letzter Beitrag vom 7. Sep 2007
Antwort Antwort
thabaker

Registriert seit: 1. Jul 2007
50 Beiträge
 
Turbo Delphi für Win32
 
#1

Innerhalb eines select's prüfen ob Spalte existiert?

  Alt 7. Sep 2007, 10:59
Datenbank: MySQL • Zugriff über: PHP
Ich möchte in einer SQL Abfrage verschiedene Felder benutzen, die aber nicht notwendigerweise existieren müssen (verschiedene Datenbanken). Nun wollte ich fragen ob man z.B. im WHERE-Clause eine Abfrage vorschalten kann: Existiert Spalte->ja, dann prüfe ob Spalte > 100. Sonst gibts ja immer den Fehler unknown column...

also so was: WHERE... (IF EXISTS( Spalte1, 'SPALTE1>100'))

//edit: ich weiß dass es besser wäre eine homogene Tabellenstruktur zu haben, nur Kunde ist König...
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Innerhalb eines select's prüfen ob Spalte existiert?

  Alt 7. Sep 2007, 11:22
Hi,


hmmm... wüsste keine direkte Lösung.. Schreib doch selber ne Funktion die das prüft:

Delphi-Quellcode:
function teste_ob_spalte_da($spalte, $tabelle)

  $sql = ' SELECT '.$spalte.' FROM '.$tabelle;
  mysql_query($sql);
 
  return !(mysql_error());
}
ist zwar nicht schön, weil du trotzdem nen sql-error auslöst, aber der wird nicht gezeigt...

[edit]nicht getestet, sollte aber gehen[/Edit]

Gruß
Ansgar
  Mit Zitat antworten Zitat
thabaker

Registriert seit: 1. Jul 2007
50 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Innerhalb eines select's prüfen ob Spalte existiert?

  Alt 7. Sep 2007, 11:26
Das habe ich auch schon versucht aber bei meinem Framework ist das Problem dass die SQL-Statements gespeichert aus der Datenbank kommen können, bzw im Script definiert werden bevor die Konfiguration der Datenbank geladen wird. hatte sonst schon "DESCRIBE tabelle spalte" im Kopf.
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#4

Re: Innerhalb eines select's prüfen ob Spalte existiert?

  Alt 7. Sep 2007, 12:02
Min, moin,

würde eine Select-Anweisung senden die keine Datenmenge zurückgibt und nur die vorhandene Feldliste ausgibt.
SELECT * FROM MyTable WHERE 1=2 Die Feldnamen könnten in eine Stringliste eingelesen werden. Daraus kann dann die eigentliche SQL gebaut werden.

Grüße // Martin


PS: Ist nicht schön, aber DB-unabhängig.
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Innerhalb eines select's prüfen ob Spalte existiert?

  Alt 7. Sep 2007, 12:22
Kannst Du das nicht vorab in PHP prüfen? mysql_list_fields()
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Innerhalb eines select's prüfen ob Spalte existiert?

  Alt 7. Sep 2007, 12:28
Ich kenn mich jetzt nicht so mit MySQL aus, aber in MSSQL gibt es Systemtabellen, aus welchen man das ganz einfach auslesen kann...
Bei MySQL wird es nicht viel anders sein.

Daraus macht man dann einfach ne SP, da nicht jeder Rechte auf die System Tabellen erhalten sollte. fertig.

Bye Christian
Christian
  Mit Zitat antworten Zitat
thabaker

Registriert seit: 1. Jul 2007
50 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Innerhalb eines select's prüfen ob Spalte existiert?

  Alt 7. Sep 2007, 12:45
Danke für die ganzen Tipps, aber sie haben alle gemeinsam:
- dass eine MySQL Verbindung existieren muss (was nicht der FAll ist)
- dass ein PHP Skript die Abfrage zusammenbaut (was nicht sein muss, Statement kann aus der DB kommen, wenn dann eine Verbindung existiert)

Ablauf:
- laden der wichtigsten SQL-Statements aus einer Datei
- laden der Datenbankverbindungsdaten
- Herstellen der Verbindung
- Abfragen von weiteren SQL-Statements aus der DB

// ich lade jetzt je nach Projekt die passenden SQLs nach. Geht auch, erfordert nur mehr Organisation
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Innerhalb eines select's prüfen ob Spalte existiert?

  Alt 7. Sep 2007, 15:08
Zitat von thabaker:
[...]- dass eine MySQL Verbindung existieren muss (was nicht der FAll ist)[...]
Wie willst du abfragen ob ein Feld in einer Tabelle in einer Datenbank existiert, wenn keine Verbindung zu der Datenbnak existiert. Das entbehrt doch jeder Logik Du kannst dir auch keinen Döner von um der Ecke holen, wenn der Laden dicht hat


Gruß
Ansgar
  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 04:13 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