sql abfrage: nur bestimmte SPALTEN abfragen?
paul
- datenbank
hier erstmal eine beispieltabelle:
id auto_farbe auto_ps auto_preis fahrrad_farbe fahrrad_preis
1 rot 120 20000 grün 200
2 gelb 100 3000 blau 400
ich würde gerne eine SQL-Abfrage mit nur den Spalten, die "auto_" enthalten, erstellen.
"händisch" wäre das also:
SELECT auto_farbe, auto_ps, auto_preis FROM tabelle
wie kann ich aber die bedingung "enthält 'auto_' " innerhalb einer SQL-Abfrage formulieren?
Hallo Paul,
id auto_farbe auto_ps auto_preis fahrrad_farbe fahrrad_preis
ich würde gerne eine SQL-Abfrage mit nur den Spalten, die "auto_" enthalten, erstellen.
SELECT auto_farbe, auto_ps, auto_preis FROM tabelle
wie kann ich aber die bedingung "enthält 'auto_' " innerhalb einer SQL-Abfrage formulieren?
zum Beispiel mittel einer Stored Procedure, die das Information_Schema oder etwas Vergleichbares dazu befragt.
Freundliche Grüße
Vinzenz, der so etwas nicht als sinnvoll erachtet.
echo $begrüßung;
» wie kann ich aber die bedingung "enthält 'auto_' " innerhalb einer SQL-Abfrage formulieren?
zum Beispiel mittel einer Stored Procedure, die das Information_Schema oder etwas Vergleichbares dazu befragt.
Mal abgesehen, dass auch ich für den Fall des OP eine geeignetere Struktur als Lösung ansehe, wie würdest du allein mit Mitteln des DBMS eine Abfrage mit veränderlicher Spaltenanzahl realisieren? Soweit ich weiß gibt es kein eval(), um einen String als Statement ausführen zu lassen. (Zumindest nicht unter MySQL. Vielleicht kennen andere DBMS etwas derartiges.)
echo "$verabschiedung $name";
Hello,
Soweit ich weiß gibt es kein eval(), um einen String als Statement ausführen zu lassen. (Zumindest nicht unter MySQL. Vielleicht kennen andere DBMS etwas derartiges.)
SQL-Server kann soetwas z.B. in Form von EXEC.
MfG
Rouven
besser
EXEC sp_executesql @stmt, @paramsdeclaration, @params[]
Hi,
ich würde gerne eine SQL-Abfrage mit nur den Spalten, die "auto_" enthalten, erstellen.
es ist unmöglich, dass ein Teil des Spaltennamens für die Selektion von Bedeutung ist - es sei denn, Dein DB-Layout ist defekt. Beschäftige Dich mit Normalisierung.
"händisch" wäre das also:
"Automatisch" wäre es "SELECT foo, bar, qaz FROM tabelle WHERE baz='auto'".
Cheatah
es ist unmöglich, dass ein Teil des Spaltennamens für die Selektion von Bedeutung ist
-verstehe ich nicht ganz: ich kann ja auch z.B zwischen "*" für "alle spalten" und eben händisch ausgewählten spalten unterscheiden. warum soll es dann nicht sinnvoll sein, nur spalten mit "auto_" auswählen zu wollen?
»» "händisch" wäre das also:
"Automatisch" wäre es "SELECT foo, bar, qaz FROM tabelle WHERE baz='auto'".
hä? das würde aber voraussetzten, dass in besagten tabellenzeilen in der entsprechenden spalte "auto" vorkommt, dort wird aber eher "bmw" oder "audi" stehen...
Hi,
-verstehe ich nicht ganz: ich kann ja auch z.B zwischen "*" für "alle spalten" und eben händisch ausgewählten spalten unterscheiden.
abgesehen davon, dass "*" nur ein Shortcut für Testzwecke ist, ...
warum soll es dann nicht sinnvoll sein, nur spalten mit "auto_" auswählen zu wollen?
... ist der *Name* der Spalte für die Menschenlesbarkeit von Bedeutung, unter keinen Umständen aber für den Inhalt.
»» "Automatisch" wäre es "SELECT foo, bar, qaz FROM tabelle WHERE baz='auto'".
hä? das würde aber voraussetzten, dass in besagten tabellenzeilen in der entsprechenden spalte "auto" vorkommt, dort wird aber eher "bmw" oder "audi" stehen...
In der Spalte "baz" steht 'auto' (bzw. ein anderer, sinnvoller Wert wie z.B. 1). Nachdem Du Dich mit Normalisierung beschäftigt hast.
Cheatah
yo,
abgesehen davon, dass "*" nur ein Shortcut für Testzwecke ist, ...
wie kommst du auf diese idee ? * macht genau das, was es machen soll, nicht mehr und nicht weniger und das bezieht sich nicht nur auf testzwecke. und was die normaliseirung betrifft, so kannst du das gar nicht wissen, ob es nicht normalisiert ist, ohne seine hintergründe zu kennen. das thema datenbanken scheint nicht dein steckenpferd zu sein.
Ilja
Hi!
Cheatah ist heute extrem nett und hat nicht einfach gesagt, dass dein Tabellenkonstrukt Mist ist, sondern dich auf Normalisierung hingewiesen. Deine Tabelle taugt schlicht nix.
Erklaer mir doch mal vernuenftig, was ein rotes Auto mit 120 PS fuer 20.000 Euro mit einem gruenen Fahrrad fuer 200 Euro gemein haben. Gibts das jeweilige Fahrrad immer zum Auto dazu, oder was?
Ansonsten hast Du ja schon ein funktionierendes SQL Statment abgeliefert: SELECT auto_farbe, auto_ps, auto_preis FROM tabelle
Was fuer ein Problem hast Du denn damit?
Hi,
Ansonsten hast Du ja schon ein funktionierendes SQL Statment abgeliefert: SELECT auto_farbe, auto_ps, auto_preis FROM tabelle
Was fuer ein Problem hast Du denn damit?
Wahrscheinlich die Tipparbeit für
auto_farbe, auto_ps, auto_preis
statt
auto_*
F