SQL Abfrage schreibt in alle Rows den Namen der jeweiligen Column?

5 Antworten

Spalten fragst du ohne Anführungszeichen ab. Nutze auch keine Backticks ` wie z. T. empfohlen wird. Das ist nämlich kein ANSI-SQL.

Spalten-Namen sollten grundsätzlich aus ASCII Zeichen bestehen. Dann ergeben sich auch keine Probleme.

Ich empfehle Lower und Snake-Case für die Tabellennamen in SQL, also Kleinschreibung und die Trennung der Wörter durch einen Unterstrich.

Also in deinem Fall ort, telefon, lieferanten_nr

Woher ich das weiß:Berufserfahrung

Die Datenbank macht genau das, was Du ihr aufgetragen hast. Versuche selbst draufzukommen. Das geht nämlich und hilft Dir letztlich weiter.

SELECT Lieferanten-Nr,Ort,Telefon FROM Lieferanten
oder einfach
SELECT * FROM Lieferanten WHERE ...
Die Feldnamen einfach hintereinander durch KOMMA getrennt, ohne Hochkomme (keine einfachaches oder sonst welche)

Die Spaltennamen angeben, so wie den Tabellennamen -- also ohne Hochkommata

So wie du geschreiben hast, kannst du auch "Select '123456', 'Stuttgart', '832798' From Lieferanten" schreiben und bekommst Stuttgart 832798 123456 in jeder Zeile

Die einfachen Hochkommas stehen eigentlich für einen String, nicht für den Wert, wenn ich mich recht erinnere. Versuchs mal ohne.


TheQ86  09.10.2018, 14:24

So ist es. Man verwendet sogenannte Backticks. Es muss also ein

`

sein und kein

'
SELECT `Lieferanten-Nr.`, `Ort`, `Telefon` FROM `Lieferanten`
2
cucks 
Fragesteller
 09.10.2018, 14:42
@TheQ86

MySQL said:

#1054 - Unknown column 'Lieferanten-Nr.' in 'field list'

Es wird ein Error ausgeworfen ;D

0
TheQ86  09.10.2018, 14:43
@cucks

Ja dann überleg halt mal :-P Es steht doch schon klar und deutlich in der Fehlermeldung - zwar auf Englisch, aber deutlich: Unbekannte Spalte 'Lieferanten-Nr.' - kannste jetz was mit anfangen?

1
cucks 
Fragesteller
 09.10.2018, 14:47
@TheQ86

Ja schon klar das Problem besteht darin, dass ein String so ausgegeben werden soll und kein Wert.

SELECT "Lieferanten-Nr.", `Ort`, `Telefon` FROM `Lieferanten`

Bei diesem Befehl zeigt er mir jeweils Ort und Telefon aber nicht die Nummer - wenn ich Lieferanten-Nr. schreibe, also ohne jegliche Zeichen funktioniert auch nichts

0
deBaal  09.10.2018, 14:50
@cucks

Da wird die Spalten-Id bzw. Spalten-Name und die Spalten-Überschrift unterschiedlich sein. Weiß grad nicht, wie man das herausfindet.

Muss irgendwie so gehen:

select column_name from INFORMATION_SCHEMA.COLUMNS where table_name = `Lieferanten`

0
TheQ86  09.10.2018, 14:52
@cucks

Wie heißen denn deine Tabellen und Spalten überhaupt? Und was willst du erreichen?

Vielleicht hilft dir das:

SELECT `lieferanten_nummer` AS 'Lieferanten-Nr.', `ort` AS 'Ort', `telefon` AS 'Telefon'
 FROM `Lieferanten`

Damit würdest du erreichen, dass du die Daten der Spalte mit dem Namen lieferanten_nummer bekommst, im Ergebnis aber die Spalte Lieferanten-Nr. heißt.

Die Namen in den Backticks ( ` ) MÜSSEN die Namen der Tabellenspalten sein. Dahinter kannst du nach dem AS mit Anführungszeichen (einzelne oder Doppelte, geht beides) deinen Anzeigenahem auswählen.

1
TheQ86  09.10.2018, 14:58
@cucks

Nein, die Spalte heißt Lieferanten-Nr (OHNE .)

Probier mal bitte folgendes Query:

SELECT `Lieferanten-Nr` AS 'Lieferanten-Nr.', `ort` AS 'Ort', `telefon` AS 'Telefon'
 FROM `Lieferanten`

1
cucks 
Fragesteller
 09.10.2018, 15:01
@TheQ86

Oh man ist das ärgerlich aber gut dass sowas mal passiert ist :D

Vielen Dank - gibt ein Stern sobald möglich

1
milos2  09.10.2018, 21:32
@TheQ86

Nein, bitte nicht Backticks nutzen. Das ist kein ANSI-SQL. Ganz schlimm. Nicht nutzen.

0