SQL Aliases

derocco

Lt. Junior Grade
Registriert
Nov. 2015
Beiträge
321
Ich habe ein Problem mit MYSQL und Aliases:

SELECT 1 AS `one`, 2 AS 'two'; -> Funktioniert

bei
SELECT ava.language_id AS `one` from D54.language ava;

erhalte ich aber:
Code:
language_id
---------------
1
2
3

da wird das AS komplett ignoriert....



SELECT 1 AS `one`, 2 AS 'two';
SELECT 1 AS `one`, 2 AS two;
SELECT 1 AS `one`, 2 AS "two";

liefert alles korrekt. aber sobald ich eine vorhande tabelle mit feldern referenziere gehts nicht.


Same here:
SELECT ava.language_id AS `one`
,ava.language_id AS "one"
,ava.language_id AS one
FROM D54.language ava;

SELECT language_id AS `one`
,language_id AS "one"
,language_id AS one
FROM D54.language;

Klappt alles nicht
 
Zuletzt bearbeitet:
Welche Fehlerausgabe kommt denn?

SELECT language_id AS one FROM ava;

Ist D54 für die Datenbank und language für die Tabelle korrekt?
 
ja klar das stimtm alles,
Keine fehlerausgabe... das AS XXX wird einfach igonriert

es nimmt den Bezeichner aus der Language tablle -> in dem fall language_id

SELECT language_id AS one FROM D54.language;

führt zu

language_id
--------------
1
2
3
4




Btw:
SELECT @@version;
---> 5.6.33


Code:
VARIABLE_NAME	           VARIABLE_VALUE
innodb_version	                   5.6.33
protocol_version	                   10
slave_type_conversions	
version	                           5.6.33
version_comment	           MySQL Community Server (GPL)
version_compile_machine	   x86_64
version_compile_os	           linux-glibc2.5

Kann es ev am Tool oder JDBC Driver liegen?
2017-07-12_15h32_58.png

Ich verwende Squirrel
 
Zuletzt bearbeitet:
Ich habs vor kurzem (einigen Wochen) erst gemacht in der MySQL Workbench und das AS Alias hat funktioniert.

Probiers mal damit.
Evtl. kriegste da auch eine Fehlerausgabe.
 
Fuck... es scheint daran zu liegen...

Ich habes mit PHPmyadmin versucht und da gehts.

Jetzt wollte ich testen wenn ich die Aliase definition in einem Stored procedure eingebe und das mit Squirrel calle, was retour kommt.

Im PHPMYADMIN kriege ich aber dann kein SP rein....

DROP PROCEDURE IF EXISTS test_alias;


CREATE PROCEDURE `test_alias` ()
BEGIN
SELECT ava.language_id as SPRACHE
FROM D54.language ava;
END

MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4
Ergänzung ()

PHPMYADMIN kann offebar damit gar nicht umgehen...

SP in Squirrel angelegt in und mit PHPMYADMIN gecalled:

call test_alias();

kommt einfach nix....

Löschen kann ich da das SP aber problemlos
 
ich kenn das jetzt in mysql nicht, aber bist du sicher das die ausgabe des SQL das du da in der Procedure machst auch ausgegeben wird ?

edit: ja scheint wirklich so einfach zu gehen. hab nix gesagt :p
 
Zuletzt bearbeitet:
Fking strange...

Also ich lege mit Squirrel ein SP an (mit aliasen)
das selbe SP kann ich mit dem Workbench nicht anlegen...

Call mit Squirrel -> Aliase werden IGNORIERT
Call mit Workbench -> Kommt wie defiiniert retour...


Ergo habe ich nun 1 tool zum anlegen und ein tool zum callen...

Code:
DROP PROCEDURE IF EXISTS test_alias;

CREATE PROCEDURE `test_alias` ()
BEGIN
 SELECT  ava.language_id as SPRACHE
 FROM D54.language ava;
END 

call test_alias();

Führe ich das mit Squirrel aus läuft alles durch...

Resultat:
language_id
1
2
3
4


Führe ich es Mit dem Workbench aus, dann geht das Droppen und das callen..
Call Resultat:
SPRACHE
1
2
3
4

Aber eben anlegen des SP:

Code:
CREATE PROCEDURE `test_alias`()
BEGIN
 SELECT  ava.language_id as SPRACHE
 FROM D54.language ava;
END

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 4

Spielt keine Rolle ob ich das einzeln mache etc. Irgendwie monniert er das END

Semikolon weglassen oder nach END Bringt auch nichts...
Ergänzung ()

Ach ja was ich noch herausgefunden habe:

Call SP();
geht im PHPMYADMIN ja nicht, da passiert einfach nix.. .Keine fehlermeldung nix.

ABER man kann die SP ausführen under Routines und da execute drücken...

SOLANGE es KEINE Parameter im SP hat die zum übergeben sind...

Sonst erhalte ich dann #1318 Incorrect numer of Arguments for PROCEDURE

Keine Chance ein SP Mit parametern da auszuführen... Eventuell ist das aber ein Serversetting meines Providers... K.a. Bin dankbar für alle hindweise zu den diversen Baustellen :-o
 
Soweit ich mich erinnern kann, kannste Dir die Funktion auch in der Workbench über das Menü anlegen.
Schau dann mal, was er dann für Code generiert.
Ich glaube bei Dir an einen Syntax Fehler.
 
Zurück
Oben