wieso funktioniert diese Abfrage nicht? (Memberslist)

Begonnen von Martin, 20 Februar 2005, 14:36:27

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Martin

Hi,

ich möcht' mir in der Memberslist anzeigen lassen, ob ein User ein eigenes Album in der Coppermine Gallery hat. Dazu hab ich die Abfrage etwas umgebaut, und zwar so:

SELECT

uid,
name,
uname,
femail,
url,
user_msnm,
user_icq,
user_sexus,
user_famstatus,
COUNT (pid) AS pics

FROM
mx_users u
LEFT JOIN mx_cpg132_pictures cpg ON uid = owner_id

WHERE
uname != 'Anonymous'
AND user_stat=1
AND uname like 'A%'

GROUP BY
uname

ORDER BY
uname

ASC
LIMIT 0, 20


Im phpMyAdmin funktioniert sie wunderbar, wenn ich sie aber in der Memberslist starte, bekomme ich keine Ergebnisse. Sobald ich die Zeile COUNT (pid)... raus nehme gehts. Die is halt nur recht wichtig, oder wie kann ich sonst ermitteln, ob der User Bilder in seiner Gallerie hat..?

jubilee

Hmmm ....
Versuch mal so rum ...
Zitat
SELECT
pid,
uname,
uid,
user_stat

FROM
mx_cpg132_pictures
LEFT JOIN mx_users ON owner_id=uid

WHERE
((uname != 'Anonymous')
AND (user_stat=1)
AND (like= 'A%'))
ORDER BY pid
ASC
LIMIT 0, 20

MfG
jubilee

Martin

#2
Hey Jubilee,

nach langem rumprobieren heut Nachmittag hab ich einfach das Count() weggelassen und einfach nur die owner_id genommen. Is nicht sauber, geht aber auch :)
Versteh ich deine Abfrage falsch oder würden dann nur die User ausgegeben werden, die auch ein Bild in der Galerie haben?

Dass in der normalen Liste ein Foto-Icon nur angezeigt wird, wenn ein Bild vorhanden ist, funktioniert wunderbar.

Ich verzweifle grade an der Stufe zwei der Abfrage. Und zwar möchte ich jetzt nach dem Feld owner_id selektieren, so wie auch nach femail oder url. Hier wieder das gleiche, im phpMyAdmin funktioniert es, im System nicht.

Die Abfrage sieht ca. so aus: 

SELECT

uid,
name,
uname,
femail,
url,
user_msnm,
user_icq,
user_sexus,
user_famstatus,
owner_id

FROM
mx_users u
LEFT JOIN mx_cpg132_pictures cpg ON uid = owner_id

WHERE
uname != 'Anonymous'
AND user_stat=1
AND uname like 'A%'
AND owner_id <>' '

GROUP BY
uid

ORDER BY
uname

ASC
LIMIT 0, 20

bzw. im Script so:

        $select = "SELECT
uid,
name,
uname,
femail,
url,
user_msnm,
user_icq,
user_sexus,
user_famstatus,
owner_id
FROM ${user_prefix}_users u
LEFT JOIN ${prefix}_cpg132_pictures cpg ON uid = owner_id "; //select our data

        $where = " WHERE uname != 'Anonymous' AND user_stat=1 ";
if ($sortby != "user_sg") {
if ( ( $letter != "Other" ) AND ( $letter != "All" ) ) {  // are we listing all or "other" ?
$where .= "AND uname like '".$letter."%' AND $sortby <>''"; // I guess we are not..
} else if ( ( $letter == "Other" ) AND ( $letter != "All" ) ) { // But other is numbers ?
$where .= "AND uname REGEXP '^\[1-9]' AND $sortby <>'' ";
} else { // or we are unknown or all..
$where .= "AND $sortby <>''"; // this is to get rid of anoying "undefinied variable" message
}
}


Das "AND owner_id <>' ' " hab ich eingefügt, damit nur die User angezeigt werden, die auch Daten hinterlegt haben. Bei allen bereits im Standard enthaltenen Selektionen (Username, Name, Email, URL) geht das auch wunderbar, nur bei den Fotos kommen dann keine Einträge.

Ich versteh den Grund einfach nicht. Hab -zig Selektionsvarianten probiert, nix funktioniert im Script, aber alles im myAdmin... ???

Einen schönen Abend :)
Martin

jubilee

#3
Zitatnur bei den Fotos kommen dann keine Einträge.
Ähhh da ist im select ja auch gar kein Feld aus der Coppermine-Tabelle drinne. Was soll er Dir dann daraus auch anzeigen ??
MfG
jubilee

Martin

doch, doch. Die owner_id kommt ja aus der Coppermine Tabelle...

jubilee

Hallo !
Mach mal bitte folgendes :
ZitatAND owner_id <>0
Da es sich um einen numerischen Wert handelt, der immer als Standard mit 0 belegt ist, wird <>' ' nix bringen ...

Evt löst das das Problem ....

MfG
jubilee

Martin

Danke!

Probier ich aus, sobald ich mal wieder daheim bin...  ;)