Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

mysql - select variable - Problem :(

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!

  [Antwort schreiben]

Forum / Bits und Bytes

(c) 1999 - 2026 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -