SQL - Select AS Frage
Ich brauche ein SQL Statement, in dem ich ein und die selbe Tabelle 2 mal einbinde und unterschiedlich verwende
ungefähr so:
SELECT a, b, a AS a2
WHERE a.id = b.id and b.referenz = a2.id
....
das deshalb, weil meine erste abfrage der a.id zb '2' sein könnte, von b.referenz jedoch eine 6 zurückkommt und ich den sich dadurch ergebenden a2.id wert von 6 ausgeben will auf einer php Seite
(ich hoffe ich habe mich halbwegs verständlich ausgedrückt)
nur: geht das überhaupt und wenn ja: ist AS der richtige befehl? bekomme immer fehlermeldungen!?
ungefähr so:
SELECT a, b, a AS a2
WHERE a.id = b.id and b.referenz = a2.id
....
das deshalb, weil meine erste abfrage der a.id zb '2' sein könnte, von b.referenz jedoch eine 6 zurückkommt und ich den sich dadurch ergebenden a2.id wert von 6 ausgeben will auf einer php Seite
(ich hoffe ich habe mich halbwegs verständlich ausgedrückt)
nur: geht das überhaupt und wenn ja: ist AS der richtige befehl? bekomme immer fehlermeldungen!?
8 Antworten
- LÖSUNG Logan000 schreibt am 20.09.2011 um 16:02:09 Uhr
- LÖSUNG vorstieg schreibt am 20.09.2011 um 16:25:56 Uhr
- LÖSUNG sadida schreibt am 20.09.2011 um 16:32:45 Uhr
- LÖSUNG nxclass schreibt am 20.09.2011 um 16:38:54 Uhr
- LÖSUNG sadida schreibt am 20.09.2011 um 17:03:12 Uhr
- LÖSUNG Biber schreibt am 20.09.2011 um 17:41:10 Uhr
- LÖSUNG nxclass schreibt am 20.09.2011 um 21:01:14 Uhr
- LÖSUNG sadida schreibt am 21.09.2011 um 15:48:17 Uhr
- LÖSUNG sadida schreibt am 20.09.2011 um 17:03:12 Uhr
- LÖSUNG nxclass schreibt am 20.09.2011 um 16:38:54 Uhr
LÖSUNG 20.09.2011 um 16:02 Uhr
LÖSUNG 20.09.2011 um 16:25 Uhr
LÖSUNG 20.09.2011 um 16:32 Uhr
jaja is mir schon klar das ein from auch noch dazugehört 
hab ja nicht das gesamte statement reinkopiert da sich der rest von selbst erklärt...
jetzt funktioniert das statement - wenn ich jetzt aber mit php das feld a2.id statt a.id ausgeben will - wie mach ich das? muss ich wirklich jedes einzelne feld mit AS übersetzen? sprich:
a.id AS a2.id, a.artnr AS a2.artnr usw... usf...
damit ich es ansprechen kann?
oder gehts direkt im php-code auch? das funktioniert jedenfalls nicht: <?php echo $row_test['a2.artnr']; ?>
hab ja nicht das gesamte statement reinkopiert da sich der rest von selbst erklärt...
jetzt funktioniert das statement - wenn ich jetzt aber mit php das feld a2.id statt a.id ausgeben will - wie mach ich das? muss ich wirklich jedes einzelne feld mit AS übersetzen? sprich:
a.id AS a2.id, a.artnr AS a2.artnr usw... usf...
damit ich es ansprechen kann?
oder gehts direkt im php-code auch? das funktioniert jedenfalls nicht: <?php echo $row_test['a2.artnr']; ?>
LÖSUNG 20.09.2011 um 16:38 Uhr
LÖSUNG 20.09.2011 um 17:03 Uhr
ja PERFEKT nun ists genau so wie ich es wollte - vielen Dank!
abschliessend noch eine kleine Frage:
Wie schwerwiegend ist es, wenn ich in einer mysql db mit ca. 500 datensätzen und ca. 20 spalten mit "Select *" drüberrausche, anstelle tatsächlich nur die felder mit "select a.id, b.id usw..." anzusprechen, die ich tatsächlich brauche?
schwere performance-schwierigkeiten o.ä.?
abschliessend noch eine kleine Frage:
Wie schwerwiegend ist es, wenn ich in einer mysql db mit ca. 500 datensätzen und ca. 20 spalten mit "Select *" drüberrausche, anstelle tatsächlich nur die felder mit "select a.id, b.id usw..." anzusprechen, die ich tatsächlich brauche?
schwere performance-schwierigkeiten o.ä.?
LÖSUNG 20.09.2011 um 17:41 Uhr
Moin sadida,
Falls du allein lebst, dann kannst du gerne einen Geschirrspüler beladen mit nur einem Teelöffel abschicken oder die Wohnung mit dem Toaster heizen.
Falls du allerdings in irgendeine WG einziehen möchtest, in der alle gemeinsam die vorhandenen Ressoucen bezahlen und diese Ressourcen auch nur begrenzt aufblasbar sind ....
--> dann nimm dir nur, was du brauchst und nicht alles, was du theoretisch bekommen kannst.
Denk ans letzte Wochenende - irgendwann werden auch die Dreistesten abgestraft.
Grüße
Biber
Zitat von @sadida:
Wie schwerwiegend ist es, wenn ich in einer mysql db mit ca. 500 datensätzen und ca. 20 spalten mit "Select *"
drüberrausche, anstelle tatsächlich nur die felder mit "select a.id, b.id usw..." anzusprechen, die ich
tatsächlich brauche?
schwere performance-schwierigkeiten o.ä.?
Ich sach ma so...Wie schwerwiegend ist es, wenn ich in einer mysql db mit ca. 500 datensätzen und ca. 20 spalten mit "Select *"
drüberrausche, anstelle tatsächlich nur die felder mit "select a.id, b.id usw..." anzusprechen, die ich
tatsächlich brauche?
schwere performance-schwierigkeiten o.ä.?
Falls du allein lebst, dann kannst du gerne einen Geschirrspüler beladen mit nur einem Teelöffel abschicken oder die Wohnung mit dem Toaster heizen.
Falls du allerdings in irgendeine WG einziehen möchtest, in der alle gemeinsam die vorhandenen Ressoucen bezahlen und diese Ressourcen auch nur begrenzt aufblasbar sind ....
--> dann nimm dir nur, was du brauchst und nicht alles, was du theoretisch bekommen kannst.
Denk ans letzte Wochenende - irgendwann werden auch die Dreistesten abgestraft.
Grüße
Biber
LÖSUNG 20.09.2011 um 21:01 Uhr
Ich glaube die "Blume" von Biber sagt schon alles.
Solange Du in deinen WHERE's und ON's nur die Spalten nutzt für die ein Index angelegt ist, sehe ich kein Problem. Es kommt natürlich auch etwas auf die Arten der Spalten an. In so einem Fall könnte man auch die vielen Spalten zu einer zusammen fassen, so kommen die Daten schneller aus der Datenbank.
Große Datenbanken nutzen für sowas auch etwas andere Technicken - BigTables - schau dir doch mal 'Apache Cassandra' ( http://cassandra.apache.org/ ) dazu an.
Solange Du in deinen WHERE's und ON's nur die Spalten nutzt für die ein Index angelegt ist, sehe ich kein Problem. Es kommt natürlich auch etwas auf die Arten der Spalten an. In so einem Fall könnte man auch die vielen Spalten zu einer zusammen fassen, so kommen die Daten schneller aus der Datenbank.
Große Datenbanken nutzen für sowas auch etwas andere Technicken - BigTables - schau dir doch mal 'Apache Cassandra' ( http://cassandra.apache.org/ ) dazu an.
LÖSUNG 21.09.2011 um 15:48 Uhr