Kann ich bei einer SELECT Abfrage einem Attribut das ich suche will, z.B. Name ein Kürzel zuteilen wie etwa "SELECT Name n FROM ..."?

3 Antworten

Ja das geht, jedoch soweit ich weiß nur für das Ergebnis.

Also wenn du quasi folgende Abfrage realisieren willst:

"Zeige mir alle Namen die mit A anfangen:

SELECT name n FROM namensliste WHERE (name LIKE "A%")

Die Syntax der Like-Abfrage wird wohl nicht so ganz stimmen, aber ist für meine Erwähnung jetzt auch nicht entscheident.

Im Ergebnis der Abfrage wird der Name nun durch n bezeichnet, aber für die Where-Bedingung muss name eingesetzt werden.

Ja, und zwar genauso, wie du es vorschlägst, oder alternativ "select name as n from..."

Probiere so etwas doch einfach aus ;)

Hello there,

ja das ist möglich, die meisten SQL-Implementierungen, wie etwa MySQL unterstützen das Konzept der Aliase. Das geht sowohl bei Spaltennamen als auch bei Tabellennamen und macht Queries mit JOINS übersichtlicher und erzeugt auch schöner weiterverarbeitbare Ergebnismengen.
Die Aliase werden einfach an den Spalten oder Tabellennamen angehängt, es ist auch möglich noch ein AS einzufügen, um es klarer zu machen. Ich persönlich verwende für Tabellen meist sehr kurze Aliase ohne AS und für Spalten klare Namen mit AS. Ein Beispiel:

SELECT m.Mond_ID AS ID, m.Name AS Bezeichnung, m.Durchmesser as Durchmesser
FROM monde m, planeten p,
(SELECT galaxy, count(*) AS Anzahl, stern_id FROM sterne WHERE Galaxy LIKE "Milchstraße") s
WHERE m.planeten_id = p.planeten_id
AND s.planeten_id = s.stern_id
AND p.planeten_bezeichnung = "Erde"
AND s.stern_bezeichnung = "Solaris";

Hier wurde aus den Tabellen, die teilweise auch durch Zwischenabfragen gebildet wurden, nur noch m, p und s, dadurch ist etwa die Bereinigung des kartesischen Produkts in den ersten WHERE-Zeilen um einiges schlanker geworden und für die Spalten haben wir aussagekräftige Namen.

Du musst aber etwa darauf achten, bei einer Programmiersprache, mit der du die Abfrage ausführst, auch mitzuteilen, welche Werte du haben magst:

$sql = "nicht nochmal, stell dir das obige SQL-Konstrukt vor...";
$ergebnis = mysqli_query($db, $sql);
$spaltennamen = myssqli_fetch_fields($ergebnis);
foreach ($spaltenname AS $spalteninfo)
{
      //Hier wird der Name ausgegeben, den DU gesetzt hast, also das Alias 
      printf("Name:     %s\n", $val->name);
      //Hier werden die Originalnamen verwendet, evtl. inklusive Tabellenpräfixe      printf("Originallname:    %s\n", $val->orgname);
}

Hoffe ich konnte dir helfen.
MfG
Alex

Abfrage in Access funktioniert nicht richtig?

Hallo :-)

ich habe in Access eine Abfrage gebastelt, die beim ersten mal tut was sie soll und beim zweiten mal nicht mehr. Hier erstmal das SQL Statement der Abfrage:

UPDATE General, CustomerContacts

SET General.Order_by_2 = [CustomerContacts]![Adress]

WHERE ((([General]![costumer_code])=[CustomerContacts]![Customer

Code]) AND ((General.[Test No])=[Formulare]![Switchboard]![Test_No_eingabe]));

Also, in einem Formular wird ein bestimmtest Kürzel eingeben (z.B. US), dieses Kürzel wird dann in der Tabelle General unter custumer_code abgelegt. Wenn man das Kürzel eingegeben hat und man das Feld im Formular verlässt, wird die Abfrage gestartet. Es existiert eine weitere Tabelle CustomerContacts mit den Felder "Customer Code" und "Adress". Die Tabelle General ist nach der "Testnummer" sortiert. Die Werte in dem Formular selbst, werden auch nach der Testnummer sortiert. Diese Testnummer gibt man am Anfang der Datenbank in ein Feld auf dem Switchboard ein.

Nun möchte ich, dass folgendes passiert: Die ausgelöste Abfrage aktualisiert den Wert von "Order_by_2" in der Tabelle "General" mit dem Wert "Adress" aus der Tabelle "CustomerContacts". In dem Formular gibt es dann ein weiteres Feld, welches mit der Spalte "Order_by_2" verknüpft ist und dies soll dann die Adresse zu dem passenden Kürzel enthalten. Ich filter natürlich nach der passenden Testnummer und dem passenden Kürzel (s.h. SQL Statement).

Es passiert aber folgendes: Das Formular ist offen, ich gebe einen Wert für das Kürzel ein drücke Enter und die Abfrage setzt den passenden Wert. Alles hat funktioniert. Nun kann es ja sein, dass man sich verschrieben hat und nimmt nun "RS" anstatt "US". Beim zweiten mal startet die Abfrage, aber es passiert nichts. Ich dachte erst daran das Formular zu refreshen und die Tabelle zu aktualisieren, aber auch das hat nichts gebracht. Ein schließen und erneutest öffnen des Formulars bringt auch nichts :D

Ich weiß nicht mehr weiter, könnte mir jemand vielleicht ein Denkanstoß, oder sogar die Lösung verraten ?

Besten Dank im Vorraus!

...zur Frage

Was möchtest Du wissen?