PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Mysql subquery problem (http://www.selfphp.de/forum/showthread.php?t=6762)

Ted 27.01.2004 03:51:00

Mysql subquery problem
 
wenn ich die folgende anfrage sende:

"SELECT * FROM ci_config` WHERE `config_id`=(SELECT `config_id` FROM `ci_config` WHERE `config_key`='default' AND `config_value`=1 LIMIT 1)"

bekomme ich die fehlermeldung:

Fehler in der Syntax bei 'SELECT `config_id` FROM `ci_config` WHERE `config_key`='default'' in Zeile 1.
1064

wenn ich die anfrage splitte in:

SELECT * FROM ci_config` WHERE `config_id`=0

und

SELECT `config_id` FROM `ci_config` WHERE `config_key`='default' AND `config_value`=1 LIMIT 1

bekomme ich die resulte die ich wuensche, und fuer die zweite anfrage waere das eine null, hier noch die tabelle:

config_id config_key config_value
0 board_status :0
0 cookie_domain :
0 cookie_name :ci_
0 cookie_path :
0 cookie_secure :0
0 default :1
0 session_length :3600

Wo liegt mein fehler(mysql 3.23.49 und mysql 4.1)

chris17 27.01.2004 13:38:53

Hi Ted,

evtl., ist das ja ein Paste-Copy Fehler, fehlt in Deinem Skript auch der Backtick?
Code:

"SELECT * FROM `ci_config` WHERE `config_id`=(SELECT `config_id` FROM `ci_config` WHERE `config_key`='default' AND `config_value`=1 LIMIT 1)"
              ^

Gruss

Ted 27.01.2004 21:56:06

Neh das ist eigentlich nen pastefehler, wenn ich den suchstring der durch php erhalt via echo ausgebe sthet da exakt was ich haben will, nur mit dem problem das es nicht funzionuckelt

SELECT * FROM `ci_config` WHERE `config_id`=(SELECT `config_id` FROM `ci_config` WHERE `config_key`='default' AND `config_value`=1 LIMIT 1)

Danke im Vorraus und an chriss17 Ted

meikel (†) 28.01.2004 00:04:52

Zitat:

Original geschrieben von Ted
nur mit dem problem das es nicht funzionuckelt.
Das hätte mich auch gewundert. Immerhin kann MySQL Subselects mehr oder wenig erst dann, wenn die Version 4.1.0 mal fertig ist.

Ted 28.01.2004 04:34:23

Kann mir dann mal jemand verraten wie ich das query ausfuehren kann(joins o.a.) um nicht auf mysql 4.1 updaten zu muessen?
Ihc werde das zwar wahrscheinlich tuen, aber kann ja nicht schaden das zu wisse.
danke ted

chris17 28.01.2004 13:14:52

Zitat:

geschrieben von Ted
Wo liegt mein fehler(mysql 3.23.49 und mysql 4.1)
Zitat:

geschrieben von Ted
...um nicht auf mysql 4.1 updaten zu muessen?
Dachte schon, dass Du 4.1(Alpha?) benutzt, egal.

Ich hab' mir das jetzt bissl genauer angeschaut, du frägst ja nur die Tabelle `ci_config` ab.
Da brauchst Du doch gar keine Subquerys, Joins oder sonstwas.
Hast Du schonmal versucht die beiden funktionierenden Querys einfach in der WHERE-Klausel zusammenzufassen.
Zitat:

wenn ich die anfrage splitte in:
SELECT * FROM ci_config` WHERE `config_id`=0
und
SELECT `config_id` FROM `ci_config` WHERE `config_key`='default' AND `config_value`=1 LIMIT 1
-->
Code:

SELECT * FROM `ci_config` WHERE `config_id`=0 AND `config_key`='default' AND `config_value`=1
Das sollte doch klappen...


Gruss

Ted 28.01.2004 17:15:49

Sorry da ist mir ein fehler unterlaufen, ich hatte version 4.0 alpha und hab jetzt upgedatet.
Allerdings erreicht dein query nicht ganz was ich moechte, es nimmt nur eine zeile raus waehrend meins mehrere returned:
du pickst die zeile wo alle drei values gesetzt sind, waehrend ich mir die configurations id geben lasse wo defaul true ist(was so viel heissen soll wie diese cfg soll geladen werden, und dann nehme ich jeden eintrag von der tabelle wo die id der id von dem key default=true ist.

Danke trozdem mit sql 4.1 funzts
Ted


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:25:19 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.