php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-10-2007, 09:47
Flip7
 Registrierter Benutzer
Links : Onlinestatus : Flip7 ist offline
Registriert seit: May 2007
Ort: Munich
Beiträge: 126
Flip7 ist zur Zeit noch ein unbeschriebenes Blatt
Flip7 eine Nachricht über ICQ schicken
Standard [MySQL 3.23.X] Abfrage versionsabhängig?

Guten Tag,

ich hab gestern meine Gallery fertiggeschrieben und benutze u.a folgende Abfrage:

SELECT *
FROM bs_gallery AS g
INNER JOIN bs_gallery_album AS ga ON ( ga.gallery_album_gallery = g.gallery_id )
LEFT JOIN (

SELECT gallery_pictures_album, count( gallery_pictures_album ) AS pics
FROM bs_gallery_pictures
GROUP BY gallery_pictures_album
) AS gp ON ( gp.gallery_pictures_album = ga.gallery_album_id )
LEFT JOIN bs_gallery_pictures AS p ON ( p.gallery_pictures_id = ga.gallery_album_pid )
LEFT JOIN bs_user AS u ON ( u.user_id = ga.gallery_album_uid )
ORDER BY g.gallery_order ASC , ga.gallery_album_date DESC

Auf meinem Computer hab ich MySQL 3.23.49.
Bei mir funktioniert die Abfrage ohne Probleme.
Auf meinem 1und1 Webspace funkioniert die Abfrage nicht!

Jetzt mal unabhängig wie die Tabellen aussehen, scheint MySQL auf dem 1und1 Server nicht mit "count() und GROUP BY" zurechtzukommen!?

Fehlermeldung ist: "#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT gallery_pictures_album , count( gallery_pictures_album )"

Es ist meiner Meinung nach versionsabhängig.
Wurden Aggregat-funktionen früher anders behandelt?
Ich kann leider nicht rausfinden, welche Version MySQL bei 1und1 hat. (Modified: 1und1 benutzt MySQL 4.0)

Vielen Dank schon mal!
gruß Flip
__________________
Find Parties?
Partysuche

Geändert von Flip7 (31-10-2007 um 09:51 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 31-10-2007, 11:28
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich kann mir fast nicht vorstellen, dass deine Uraltversion mehr kann, als die alte Version von 1&1. Aber ich kanns nicht nachvollziehen, da die älteste Version, die ich noch auf einem alten Server gefunden habe 4.1 ist.
Aber ich glaube auch nicht, dass die Aggregat-Funktionen Probleme machen, sondern der Join mit einem Subselects. Diese werden nach meinen Informationen erst seit V.4.1 unterstützt. Aber dann dürfte das ja bei dir auch nicht laufen
__________________
Gruss
H2O
Mit Zitat antworten
  #3 (permalink)  
Alt 31-10-2007, 12:30
Flip7
 Registrierter Benutzer
Links : Onlinestatus : Flip7 ist offline
Registriert seit: May 2007
Ort: Munich
Beiträge: 126
Flip7 ist zur Zeit noch ein unbeschriebenes Blatt
Flip7 eine Nachricht über ICQ schicken
Standard

kann ich mir leider auch nicht vorstellen...
auf Home steht:
Server version: 5.0.45-community-nt
MySQL client version: 3.23.49

könnte sein, dass 1und1 subselects verboten hat?
wieso schreibt der 1und1 server dann, dass ich einen Syntax fehler habe?
kann sein, dass die Funktion "count()" anders heißt?
ich habe nämlich mehrere abfragen und es ist glaub ich immer count gekoppelt mit group by drinnen...

Vielen Dank
__________________
Find Parties?
Partysuche
Mit Zitat antworten
  #4 (permalink)  
Alt 31-10-2007, 12:41
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

setze mal diese Abfrage ab:

SHOW VARIABLES LIKE "%version%"

dann wirst du sehen, ob sub-select unterstützt wird oder nicht
Mit Zitat antworten
  #5 (permalink)  
Alt 31-10-2007, 12:48
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Client-Version ist nicht die MySQL-Version! Du hast also MySQL 5.0.45.

Hättest du wirklich eine dreier-Version, dann wüsstest du das auch genau, denn die muss man entweder gezielt suchen, oder lange Zeit beibehalten ohne sie upzudaten.
__________________
ich glaube
Mit Zitat antworten
  #6 (permalink)  
Alt 31-10-2007, 13:01
Flip7
 Registrierter Benutzer
Links : Onlinestatus : Flip7 ist offline
Registriert seit: May 2007
Ort: Munich
Beiträge: 126
Flip7 ist zur Zeit noch ein unbeschriebenes Blatt
Flip7 eine Nachricht über ICQ schicken
Standard

also die %variables% abfrage brachte:
protocol_version 10
version 4.0.27-standard-log
version_comment Official MySQL RPM
version_compile_os pc-linux-gnu

ich bin echt verzweifelt...
__________________
Find Parties?
Partysuche
Mit Zitat antworten
  #7 (permalink)  
Alt 31-10-2007, 13:17
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Damit ist ja klar, die Version auf 1&1-Server unterstützt kein sub-select!
Mit Zitat antworten
  #8 (permalink)  
Alt 31-10-2007, 15:41
Flip7
 Registrierter Benutzer
Links : Onlinestatus : Flip7 ist offline
Registriert seit: May 2007
Ort: Munich
Beiträge: 126
Flip7 ist zur Zeit noch ein unbeschriebenes Blatt
Flip7 eine Nachricht über ICQ schicken
Standard

Okay
Des ist natürlich schlecht!
Aber wieso ist das ein Syntax Error?
Wieso kommt nicht "subselects not allowed" ?
kommt mir irgendwie komisch vor...

Weiß jemand wie man das umschiffen kann?
ich hab mal was von einem Join mit sich selbst gehört, aber der würde bei Aggregat-Funktionen nicht hinhauen, wenn ich mich nicht täusche!?

bei JOINS bekomme ich doch nur bestimmte Zeilen aus der verknüpften Tabelle. Wie kann ich da dann einen count oder sum drüberlaufen lassen?

Vielen Dank
__________________
Find Parties?
Partysuche
Mit Zitat antworten
  #9 (permalink)  
Alt 31-10-2007, 15:48
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Flip7
Aber wieso ist das ein Syntax Error?
Wieso kommt nicht "subselects not allowed" ?
kommt mir irgendwie komisch vor...
Naja, weil es das zu der Zeit noch gar nicht gab - Wenn du ne USB-Maus in nen C64 gequetscht hättest, hätte der auch nicht gesagt "Diese zukünftige Technologie wird leider noch nicht unterstützt"

Zitat:
Weiß jemand wie man das umschiffen kann?
Erklär doch mal was dein Monsterquery eigentlich machen soll..
__________________
ich glaube
Mit Zitat antworten
  #10 (permalink)  
Alt 31-10-2007, 16:13
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

SELECT * FROM ... ist grundsätlich schlecht. Bei einem Join über vier Tabellen bringt dir das schon fast eine Anklage wegen fahrlässiger Tötung des MySQL-Servers ein.
Wenn du hingegen die Attribute auflisten würdest, dann könnten wir wenigstens ein paar Rückschlüsse auf die von dir verschwiegene Datenstruktur machen. Ohne diese, bzw. - wie von ministry schon gesagt - einer Erklärung dessen, was du überhaupt willst, wird dir kaum jemand helfen können.
__________________
Gruss
H2O
Mit Zitat antworten
  #11 (permalink)  
Alt 02-11-2007, 11:20
Flip7
 Registrierter Benutzer
Links : Onlinestatus : Flip7 ist offline
Registriert seit: May 2007
Ort: Munich
Beiträge: 126
Flip7 ist zur Zeit noch ein unbeschriebenes Blatt
Flip7 eine Nachricht über ICQ schicken
Standard

ja ist verständlich!

Aber ich hab beide Sachen nun elegant umgangen :-D
Folgende Abfrage unternimmt das gleiche:

SELECT count(*) as pics, gallery_album_id, gallery_album_titel, gallery_album_pid, gallery_album_uid, gallery_album_date,
gallery_id, gallery_titel, gallery_order, user_id, user_nick, p.gallery_pictures_id
FROM bs_gallery AS g
INNER JOIN bs_gallery_album AS ga ON ( ga.gallery_album_gallery = g.gallery_id )
LEFT JOIN bs_gallery_pictures AS gp ON ( gp.gallery_pictures_album = ga.gallery_album_id )
LEFT JOIN bs_gallery_pictures AS p ON ( p.gallery_pictures_id = ga.gallery_album_pid )
LEFT JOIN bs_user AS u ON ( u.user_id = ga.gallery_album_uid )
GROUP BY gallery_album_id, gallery_album_titel, gallery_album_pid, gallery_album_uid, gallery_album_date, gallery_id, gallery_titel, gallery_order, user_id, user_nick, gallery_pictures_id
ORDER BY g.gallery_order ASC , ga.gallery_album_date DESC

Und jetzt sagt bitte niemand, dass es eine Monsterabfrage war :-D !!!

meiner Meinung nach VIIIIEEEEL unübersichtlicher!

gruß und vielen Danke nochmal
oft löst sich das einfach auch selber, aber ich war jetzt so verzweifelt...
__________________
Find Parties?
Partysuche
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:47 Uhr.