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 13-01-2008, 08:06
Noreia
 Newbie
Links : Onlinestatus : Noreia ist offline
Registriert seit: Jan 2008
Beiträge: 6
Noreia ist zur Zeit noch ein unbeschriebenes Blatt
Standard MySQL Abfrageproblem

Hallo,
Habe ein kleines Abfrageproblem in meinem PHP-Script. Deshalb habe ich die SQL-Afrage in phpMyAdmin mal durchlaufen lassen. Mein Problem ist, das ich ich diese Abfrage mit der gleichen Tabelle auf meinem Root-Server Fehlerfrei ausführen lassen kann. Aber Local (xampp) und bei meinem Webhoster eben nicht.
Hier mal das Script:
PHP-Code:
SELECT f1 . * , AVGr.rate_point ) AS ratingCOUNTr.votes_file 
                                    AS 
total_votesu.user_idu.usernamec.cat_idc.cat_nameCOUNTcm.comments_id 
                                    AS 
total_comments
FROM phpbb_pa_files 
AS f1phpbb_pa_cat AS c
LEFT JOIN phpbb_pa_votes 
AS r ON f1.file_id r.votes_file
LEFT JOIN phpbb_users 
AS u ON f1.user_id u.user_id
LEFT JOIN phpbb_pa_comments 
AS cm ON f1.file_id cm.file_id
WHERE f1
.file_id  <-- Hier markiert mir phpMyAdmin den Fehler
IN 
)
AND 
c.cat_id f1.file_catid
AND f1.file_approved '1'
GROUP BY f1.file_id
ORDER BY file_time DESC
LIMIT 20 
Als Fehlermeldung bekomme ich:
PHP-Code:
#1054 - Unknown column 'f1.file_id' in 'on clause' 
Auf allen Servern läuft die Mysql Version 5.x
Was mache ich falsch? Oder liegt es an den Servereinstellungen?

Das Script stammt übrigens von www.mx-system.com . Ist ein Download File Manager für das phpBB Forum. Es funktioniert sonst einwandfrei. Nur die Suchfunktion läuft nicht auf meinen localen Rechner und bei menem Webhoster.

Gruß Noreia
Mit Zitat antworten
  #2 (permalink)  
Alt 13-01-2008, 11:45
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Und die Spalte existiert in der Tabelle wirklich?
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #3 (permalink)  
Alt 13-01-2008, 13:21
Noreia
 Newbie
Links : Onlinestatus : Noreia ist offline
Registriert seit: Jan 2008
Beiträge: 6
Noreia ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja, die gibt es wirklich. Dieses SQL-Script auf ich auf identischen Datenbanken laufen lassen. Nur eben andere Rechner. Habe jetzt mal mit phpMyAdmin experimentiert. Wenn ich alle Left Joins herausnehme funzt es.
PHP-Code:
SELECT f1 . * ,u.user_idu.username
               
c.cat_id,  c.cat_name               
FROM phpbb_pa_files 
AS f1
     
phpbb_pa_cat   AS c
WHERE f1
.file_id IN )
AND 
c.cat_id f1.file_catid
AND f1.file_approved '1'
GROUP BY f1.file_id
ORDER BY file_time DESC
LIMIT 20 
Aber warum läuft es nicht mit den Left Joins?

Gruß Noreia
Mit Zitat antworten
  #4 (permalink)  
Alt 13-01-2008, 13:24
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also da steht on-clause, demnach würde ich mal (wieder) davon ausgehen, dass PMA da einen Bug hat.
Abgesehen davon würde ich mal probieren diese doppelten komma-Select durch einen INNER JOIN zu ersetzen
Mit Zitat antworten
  #5 (permalink)  
Alt 13-01-2008, 14:14
Noreia
 Newbie
Links : Onlinestatus : Noreia ist offline
Registriert seit: Jan 2008
Beiträge: 6
Noreia ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Abgesehen davon würde ich mal probieren diese doppelten komma-Select durch einen INNER JOIN zu ersetzen
Und wie mache ich das?
Habe ausserdem festgestellt das alle SQL-Abfragen die "Left Join AS ON" enthalten eine Fehlermeldung ausgeben.

Gruß Noreia
Mit Zitat antworten
  #6 (permalink)  
Alt 13-01-2008, 14:22
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Bitte Query und Fehlermeldung angeben.
Mit Zitat antworten
  #7 (permalink)  
Alt 13-01-2008, 16:34
Noreia
 Newbie
Links : Onlinestatus : Noreia ist offline
Registriert seit: Jan 2008
Beiträge: 6
Noreia ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Gut, die Fehlerkennzeichnung kann man in phpMyAdmin vergessen. Aber die Fehlerausgabe ist echt.
Die anderen SQL-Scripte unterscheiden sich nur von den Feldern. Die Struktur ist die gleiche.
Die Syntax ist in Ordnung. Sonst könnte ich die Abfrage ja nicht erfolgreich auf den Rootserver anwenden. Aber warum funktioniert die "Left Join" nicht auf jeden Rechner.
Datenbank wurde übrigens mit mysqldump und mysq gesichert und auf die anderen Rechner übertragen. Es sind also die selben Tabellen.
Zitat:
Bitte Query und Fehlermeldung angeben.
Steht im ersten Post.

Gruß Noreia
Mit Zitat antworten
  #8 (permalink)  
Alt 13-01-2008, 16:49
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Probiere die folgenden Queries mal in dieser Reihenfolge:
Code:
SELECT * FROM phpbb_pa_files;
SELECT * FROM phpbb_pa_cat;
SELECT * FROM phpbb_pa_votes;
SELECT * FROM phpbb_users;
SELECT * FROM phpbb_pa_comments;
SELECT * FROM phpbb_pa_files AS f
    INNER JOIN phpbb_pa_cat AS c ON c.cat_id = f.file_catid;
SELECT * FROM phpbb_pa_files AS f
    INNER JOIN phpbb_pa_cat AS c ON c.cat_id = f.file_catid
    LEFT JOIN phpbb_pa_votes AS r ON f.file_id = r.votes_file;
SELECT * FROM phpbb_pa_files AS f
    INNER JOIN phpbb_pa_cat AS c ON c.cat_id = f.file_catid
    LEFT JOIN phpbb_pa_votes AS r ON f.file_id = r.votes_file
    LEFT JOIN phpbb_users AS u ON f.user_id = u.user_id;
SELECT * FROM phpbb_pa_files AS f
    INNER JOIN phpbb_pa_cat AS c ON c.cat_id = f.file_catid
    LEFT JOIN phpbb_pa_votes AS r ON f.file_id = r.votes_file
    LEFT JOIN phpbb_users AS u ON f.user_id = u.user_id
    LEFT JOIN phpbb_pa_comments AS cm ON f.file_id = cm.file_id;
SELECT * FROM phpbb_pa_files AS f
    INNER JOIN phpbb_pa_cat AS c ON c.cat_id = f.file_catid
    LEFT JOIN phpbb_pa_votes AS r ON f.file_id = r.votes_file
    LEFT JOIN phpbb_users AS u ON f.user_id = u.user_id
    LEFT JOIN phpbb_pa_comments AS cm ON f.file_id = cm.file_id;
Aber bitte einzeln, da die Fehlermeldungen in PMA bzw. von MySQL sonst irreführen könnten.
Mit Zitat antworten
  #9 (permalink)  
Alt 13-01-2008, 20:32
Noreia
 Newbie
Links : Onlinestatus : Noreia ist offline
Registriert seit: Jan 2008
Beiträge: 6
Noreia ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,
Fehler gefunden. Es lag an der MySQL Version. Bei der 5er habe ich diese Probleme, bei der 4er nicht.
Warum eigentlich ? Würde es trotzdem gerne wissen.
Vielen Dank für eure schnelle Hilfe.

Gruß Noreia
Mit Zitat antworten
  #10 (permalink)  
Alt 13-01-2008, 20:50
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Deine Abfrage ist Käse! MySQL ist Käse!

1. wenn du SELECT ... from A, B left join C on a.xx=c.xx => was soll das werden?

2. bei verwendung AgregatFuktionen akzeptieren die anderen DBMS niemals SELECT *

3. bei Verwendung von AgregatFuktionen muss du immer alle selectierten Spalten gruppieren, außer die, die in den Fktnen selbst als Argument stehen.

Wenn du diese Regel nicht beachtest, weil MySQL dummerweise so großzügig ist, kannst du nie sicher sein, dass das Ergebnis immer wie gewollt kommt.

4. wenn die Fehlermeldung:

#1054 - Unknown column 'f1.file_id' in 'on clause'

heißt, und du bei Where den Fehler markierst; Junge, Junge, was machst du denn eigentlich? Programmieren? Wohl kaum!
Mit Zitat antworten
  #11 (permalink)  
Alt 13-01-2008, 21:32
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Würde es trotzdem gerne wissen.
Das funktioniert erst ab MySQL 5:
Zitat:
1. wenn du SELECT ... from A, B left join C on a.xx=c.xx => was soll das werden?
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #12 (permalink)  
Alt 13-01-2008, 22:58
Noreia
 Newbie
Links : Onlinestatus : Noreia ist offline
Registriert seit: Jan 2008
Beiträge: 6
Noreia ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Junge, Junge, was machst du denn eigentlich? Programmieren? Wohl kaum!
Stimmt, programmiere nicht selber. Hast wohl überlesen das das Script von www.mx-system.com stammt. Muss ich programmieren lernen wenn ich mir ein Forum mit Downloadbereich einrichten möchte? Wohl kaum. Dann hätte ich ja auch keine Zeit fürs Wesentliche. Ich muss doch nicht erst das Rad erfinden. Seit 2002 bin ich mit der Open Source Software gut gefahren. Das Preis - Leistungsverhältnis stimmt. Nur nach dem Serverwechsel sind die Probleme aufgetaucht. Ausserdem wurde mir durch phpMyAdmin links neben meinem Code eine Warnung ausgegeben. Da dachte ich ab dort wäre der Fehler.
Und wenn MySQL 5.x nicht mehr so grosszügig ist wie die Version 4.x, dann hat sich doch meine Frage geklärt.

Gruß Noreia
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 21:12 Uhr.