Mysql & zwei Select anfragen



  • Hi,

    seit welcher mysql version funktionieren denn die mysql double selects?

    zb.

    $var = "select * from test1";
    Query( "select * from ({$var})" );
    

    bei mir local funktioniert alles. nur auf dem server: mysqlv. 4.1.11

    klappt nichts !!??

    Ciao



  • SubSelects werden offiziell seit MySQL 5.0 unterstützt, bei vielen anderen DBs sind sie allerdings schon lange selbstverständlich!

    Du musst allerdings darauf achten, dass selbst in der aktuellen MySQL 5.0 Version einige Einschränkungen bei SubSelects bestehen, du kannst z.B. keine LIMIT angabe verwenden!

    Welche Einschränkungen dass genau sind ist mir gerade entfallen, sind aber einige sehr wichtige... wobei die meisten in MySQL 5.1 behoben sein sollen...



  • Geschachtelte Abfragen werden nicht erst seit der Version 5.0 von MySQL unterstützt. Dieses Feature wurde bereits in der Version 4.1 implementiert, und offiziel darüber berichtet: http://www.mysql.com/news-and-events/press-release/release_2003_05.html

    Das Beispiel von JayJay sollte im Grunde genommen funktionieren. Interessant wäre zu wissen welche Fehlermeldung MySQL zurückgibt, wenn die Abfrage auf dem Server ausgeführt wird.



  • Ah, sorry, hab' ich verwechselt...

    Aber die von mir angesprochenn Einschränkungen bestehen afaik wirklich nocht.



  • Ja, unglücklicherweise stimmt das...

    Es kann eine ziemliche Qual sein mit MySQL - vor allem mit Versionen kleiner als 4.1 - anspruchsvolle Webapplikationen zu realisieren. Aber viele raten ja einem, alternative Datenbanksoftware zu benutzen, wenn man die Wahl hat. Nun, von dieser Freiheit habe ich Gebrauch gemacht, und mir PostgreSQL etwas unter die Lupe genommen. Es ist ansich eine Top-Datenbank was die komplexen Features angeht, aber sie ist leider ziemlich ungeeignet für internationalisierte Applikationen. MySQLs Unterstützung für Kollationen und Zeichensätze ist weitaus überlegen verglichen zu PostgreSQL (mit intern. Kalenderdaten haben jedoch beide ihre Probleme). Eine weitere und wichtige Rolle spielen ja auch die Admin-Tools. MySQL hat da einen fabelhaften QueryBrowser mit exzellenten Features und einer ordentlichen und schnellen GUI. Das pgAdmin III für PostgreSQL hat mir da leider überhaupt nicht zugesagt; wxWidgets ist da bestimmt nicht unwesentlich schuld daran...

    Wie auch immer... ich möchte jetzt aufhören bevor ich noch den Thread entführe 🙄 🙂



  • @Aziz:

    Wie kann es dann sein, dass ich unter windows - mysql 1.10a entwickel und diese funktionalität untestützt wird, und auf meinem webspace, der mit mysql v.1.11 läuft (linux/debian) diese anfrage wiederum nicht unterstützt.

    normalerweise dürfte das nicht vorkommen/sein.

    gibt es sonst noch andere möglichkeiten, solche querys anzupassen ??



  • Die Fehlermeldung ist: Syntaxfehler in " select * from (select * from..."



  • JayJay schrieb:

    Wie kann es dann sein, dass ich unter windows - mysql 1.10a entwickel und diese funktionalität untestützt wird, und auf meinem webspace, der mit mysql v.1.11 läuft (linux/debian) diese anfrage wiederum nicht unterstützt.

    Du meinst jetzt 4.1.10a und 4.1.11, nicht?

    JayJay schrieb:

    gibt es sonst noch andere möglichkeiten, solche querys anzupassen ??

    Manchmal kann man Abfragen mit Sub-Selects so umformulieren, dass sie auch mit JOINs funktionieren. Das geht aber nur in besonderen Fällen, in denen die Unterabfrage in der WHERE-Klausel vorkommt (aber selbst dann gibt es keine absolute Garantie). Sub-Selects im SELECT-Teil bzw. FROM-Teil umzuschreiben kann aber auch in begrenzten Fällen möglich sein.

    JayJay schrieb:

    Die Fehlermeldung ist: Syntaxfehler in " select * from (select * from..."

    Vielleicht meckert MySQL 4.1.11 weil deine abgeleitete Tabelle (Sub-Select im FROM-Teil) keinen Alias hat. Ich hab auf meiner lokalen Maschine genau diese Version von MySQL, und im phpMyAdmin konnte ich Sub-Selects im FROM-Teil nicht ohne Alias ausführen. Probier deshalb mal "SELECT * FROM (SELECT * FROM test1) AS t".



  • Ja ich meine natürlich v4.**

    ICh habe die subquerys als alias bereits angegeben. funktioniert leider immernoch nicht 😞

    Kann es vielleicht an irgendwelchen system treibern liegen, die auf dem linux system installiert sein müssen, damit diese funktionalität der subquerys erst funnktionieren kann?



  • JayJay schrieb:

    Kann es vielleicht an irgendwelchen system treibern liegen, die auf dem linux system installiert sein müssen, damit diese funktionalität der subquerys erst funnktionieren kann?

    Halte ich für sehr unwahrscheinlich. Mir geht jetzt auch schon langsam der Rat aus. Du könntest noch versuchen Google Groups nach diesem Problem abzusuchen, oder in einem geeigneten MySQL-Forum dein Problem zu schildern (Englischkenntnisse natürlich erforderlich).



  • Hi,

    Ich hab nochmals bei meinem Provider angefragt und hab Ihnen mein Problem ein zweites mal geschilder.

    Wobei sie mir dann mitteilten, dass sie nicht die v4.1.** führen sondern noch ein etwas ältere version v4.0.2*.

    Kann ich SUbselects in anderer Form verwenden bzw. mir die funktionalität einer Subselect anfrage "künstlich" herstellen?.

    Aber anscheinent unterstützten auch bekannte Anbieter wie 1und1 nicht die Version v4.1.** ?

    Liegt das an der stabilität oder an was?

    Kennt ihr anbieter die das wiederum unstertützten?

    Mfg


Anmelden zum Antworten