Bigfoot29 - 46
Profi
(offline)
Dabei seit 04.2008
924
Beiträge
|
|
Geschrieben am: 13.06.2008 um 20:34 Uhr
|
|
Hi. Ich versuche gerade, mir durch eine Variable in Mysql einen Wert einer Zieltabellenspalte anzeigen zu lassen. Beispielcode ist:
SELECT @test:="Spaltenname";
SELECT @test FROM `Tabellenname` WHERE Zielwert='blubberwert';
Das sollte mir eigentlich das Ergebnis vom Inhalt der Spalte "Spaltenname" zurückliefern, welches in die Zeile gehört, dessen Zielwert gleich "blubberwert" ist.
Als Antwort bekomme ich aber lediglich ein:
+-------------+
| @test |
+-------------+
| Spaltenname |
+-------------+
1 row in set (0.00 sec)
Was mache ich falsch? *grübel*
Irgendwie muss es doch möglich sein, ohne zweiten Request aus einer Tabelle eine (variable) Spalte abzufragen - abhängig von vorher geführten Queries... :(
Hints anyone?
Danke vorab! :D
Gruß.
LMAA! - Lächle Mehr Als Andere!
|
|
TheMoviestar - 25
Profi
(offline)
Dabei seit 06.2006
908
Beiträge
|
Geschrieben am: 13.06.2008 um 21:34 Uhr
Zuletzt editiert am: 13.06.2008 um 21:34 Uhr
|
|
habs jetzt auch kein fehler gefunden, aber schau mal hier da bekommst du recht schnell ne lösung/antwort auf das problem
Heut ist nicht alle Tage ich komm wieder keine Frage
|
|
Bigfoot29 - 46
Profi
(offline)
Dabei seit 04.2008
924
Beiträge
|
|
Geschrieben am: 13.06.2008 um 21:48 Uhr
|
|
TheMoviestar: Danke für die Antwort.
Das wirft nur zwei Probleme auf - erstens benutze ich nur ungern PHP (ich steh damit echt auf Kriegsfuss mit) und zweitens ist das ein direktes mysql-Problem... da ist gar keine externe Programmiersprache involviert... :(
Mit zwei Queries per extra Programmiersprache (Python in meinem Fall) bekomm ichs auch hin, aber bei 100 Requests ists ein Unterschied, ob das Programm 1x warten muss, bis 200Queries gemacht und übertragen sind, oder 200x warten muss, bis je 1 query gemacht und übertragen wurde. ;)
Da hier aber eigentlich fast immer ein paar Profis unterwegs sind, wollt ich erstmal hier fragen. ^^
Gruß.
LMAA! - Lächle Mehr Als Andere!
|
|
student85 - 40
Halbprofi
(offline)
Dabei seit 12.2005
276
Beiträge
|
|
Geschrieben am: 13.06.2008 um 23:20 Uhr
|
|
Versuch mal ohne jegliche Sonderzeichen wie @.........................
ansonsten z.B.
probiere einfach mit dem ganz normalen Befehl :
select * from Tabelle.Spalte;
Wenn du blöd bist, bitte pflanze dich nicht fort...
|
|
ZER0-CooL - 36
Champion
(offline)
Dabei seit 09.2004
4459
Beiträge
|
Geschrieben am: 14.06.2008 um 00:20 Uhr
Zuletzt editiert am: 14.06.2008 um 00:20 Uhr
|
|
oder mal komplett "sauber"
SELECT `test` FROM `Tabellenname` WHERE `Zielwert`='blubberwert';
|
|
Bigfoot29 - 46
Profi
(offline)
Dabei seit 04.2008
924
Beiträge
|
|
Geschrieben am: 14.06.2008 um 13:31 Uhr
|
|
Das "saubere" klappt, hilft mir aber nicht, da "test" sich ja erst aus dem ersten Query ergibt...
Alternativ müsste ich zwei separate Connects zur Datenbank machen -> Zeitproblem bei 200 Queries...
Die einzelnen Anfragen von oben mit direkten Werten funktioniert fehlerfrei. Nur kombinieren lassen sie sich nicht.
die Frage ist: warum? *grübel*
Gruß.
LMAA! - Lächle Mehr Als Andere!
|
|
ZER0-CooL - 36
Champion
(offline)
Dabei seit 09.2004
4459
Beiträge
|
|
Geschrieben am: 14.06.2008 um 14:05 Uhr
|
|
Kannst mal sagen wie die Tabelle aufgebaut ist und was genau du aus ihr auslesen möchtest. Dann dürfte das kein Problem sein.
Grüßchen
|
|
Bigfoot29 - 46
Profi
(offline)
Dabei seit 04.2008
924
Beiträge
|
|
Geschrieben am: 15.06.2008 um 08:06 Uhr
|
|
Die Tabellen sehen wie folgt aus (Ausschnitt)
Tabelle " Allowed":
ID;ShortNamePriv;LongNamePriv;Allowed
INT; VARCHAR(20); VARCHAR(32);BOOL
54;"PrivB";"Privileg B";1
Tabelle "User":
ID;Username;{...};PrivA;PrivB;PrivC;{...}
INT;VARCHAR(32;{...};BOOL;BOOL;BOOL;{...}
4;"bigfoot29";{...};1;1;0;{0}
Als Abfragewerte habe ich nur Benutzername und LongNamePriv ODER ShortNamePriv, wobei ich bei der Abfrage nicht weiss, ob der Privilegien-Name "short" oder "long" ist. Jetzt muss ich prüfen, ob der entsprechende ShortNamePriv/LongNamePriv generell erlaubt ist. Ist es das (Wert 1), soll für den Benutzer geprüft werden, ob auch der Benutzer das darf. Dort gibts aber nur "ShortNamePriv"s alias "PrivA" oder "PrivB".
Als Antwort gibt es dann entweder die im entsprechenden "PrivXY" notiertes 0 oder 1 zurück.
Ein nested query mit zwei mysql-queries ineinander funktioniert jedoch genauso gut/schlecht, wie die Variante mit Variable oben - weswegen ich die bevorzuge.
Der Teil, in dem mir mysql den entsprechenden ShortNamePriv in die Variable speichert, funktioniert auch problemlos. Was nicht geht, ist die Tatsache, dass ich die Variable nicht als Tabellenname für den zweiten Teil des Gesamtqueries benutzen kann, um zu prüfen, ob der User tatsächlich berechtigt ist, diese Funktion auszuführen.
Was natürlich ginge, wäre, den ersten Query vom zweiten zu trennen und dann durch die Programmiersprache verarbeiten zu lassen um dann einen neuen Query zu basteln, der dann auch funktionieren würde. Das kostet aber Zeit. Sobald mehr als ein paar Benutzerprivilegien verschiedenster Benutzer abgefragt werden müssen, kostet das jedoch Bandbreite/Zeit. Ich kann die Tabellen aber auch nicht in das Programm holen und dort bearbeiten. Das Programm wird per http-Request aufgerufen und "lebt" nur ein paar (Milli)sekunden je Instanz. Wenn ich die Tabellen also jedes Mal im ganzen abfrage und im Arbeitsspeicher anpassen lasse, kostet das auch Zeit. :(
Gruß.
LMAA! - Lächle Mehr Als Andere!
|
|
ZER0-CooL - 36
Champion
(offline)
Dabei seit 09.2004
4459
Beiträge
|
|
Geschrieben am: 15.06.2008 um 13:27 Uhr
|
|
Hi,
jetzt habe ich noch eine Frage, was ist es für eine SQL-Datenbank?
Gruß
citric acid
|
|
Bigfoot29 - 46
Profi
(offline)
Dabei seit 04.2008
924
Beiträge
|
|
Geschrieben am: 15.06.2008 um 14:31 Uhr
|
|
mysql - siehe Überschrift. ;)
Gruß.
LMAA! - Lächle Mehr Als Andere!
|
|
Bigfoot29 - 46
Profi
(offline)
Dabei seit 04.2008
924
Beiträge
|
|
Geschrieben am: 21.06.2008 um 11:58 Uhr
|
|
...niemand?
LMAA! - Lächle Mehr Als Andere!
|
|