Verschachtelte SQL Abfrage

majas

Benutzer
Beiträge
11
ich hab ein Problem und vielleicht kann mir jemand weiterhelfen ...

Ich habe eine MySQL Datenbank mit ca. 5000 Einträgen auf einem zentralem Server der 3 CMS Systeme füttert ...

Das CMS System 3 soll nur Inserate aus der Datenbank erhalten mit dem Status:

erole='1' und ort='Halle Saale' der Kategorien Modelle und Transsexuelle

sowie Inserate der Kategorie Dominas mit erole='1'

und die Kategorie Events mit erole='1' und ort='Leipzig'

"erole" steht dafür, das die Inserate nur in dem CMS 2 und 3 angezeigt werden

Hiermal ein gekürzte Version der DB Abfrage:

SELECT count(*) as cnt FROM rex_sedcards WHERE erole = '1' AND kategorie NOT LIKE '%rubrik%'

Falls jemand Interesse hat und mir weiterhelfen kann, kann ich ja mal eine Teststruktur mit Testdaten posten.

Danke und Gruß Andy
 
Werbung:
Moin moin,

mhh das wird schwierig und meine Glaskugel ist zur Zeit leider in Reparatur :(

Ich sehe weder Tabellenstrukturen noch Beispiel Datensätze noch (so zumindest finde ich) hat dein SQL-Statement mit dem Betreff nichts zu tun...

Viele Grüße
 
mhh...naja über diese Tabellenstruktur lässt sich definitiv streiten, aber das war glaube nicht dien Anliegen....
Könntest du mal dein bisheriges SQL-Statement posten? und nochmal kurz umreißen was raus kommen soll?! Aus deinem Anfangspost wird man nicht schlau :D
 
Hier kommt die bisherige SQl Abfrage

SELECT count(*) as cnt FROM rex_sedcards WHERE erole = '1' AND status='1' AND displaybegin <= '2017.12.04 15:44' AND ( displayend = '' OR displayend > '2017.12.20 15:44' ) AND kategorie NOT LIKE '%rubrik%'


Und die Abfrage soll folgendes ausgeben:

Zeige mir die Kategorien "Modelle und Transsexuelle" aus "Halle (Saale)" mit "status='1'" und "erole'1'" sowie die Kategorie "Events" aus "ort='Leipzig'" mit status='1' und erole='1' sowie die Kategorie "dominas" mit status='1' und erole='1'

Es sollen keine Modelle aus Leipzig in Halle angezeigt werden

Bei den Dominas ist der Ort egal nur erole='1' wichtig

"erole='1'" ist für die Anzeige auf CMS 2 und 3 zuständig. CMS 1 = alle anzeigen und CMS 2 und 3 nur Anzeigen mit erole='1'

Die Abfrage muss irgendwie noch um die Kategorien Modelle und Trans mit dem Ort Halle sowie Events mit dem Ort Leipzig sowie die Kategorie Dominas mit dem Status erole='1' erweitert werden

Gruß Andy
 
Ich habe es schon mal so probiert, aber das Ergebnis ist gleich Null :-(

SELECT count(*) as cnt FROM rex_db sedcards

WHERE erole = '1' AND status='1'

AND displaybegin <= '2017.12.04 15:44' AND ( displayend = '' OR displayend > '2017.20.04 15:44' )

AND kategorie NOT LIKE '%rubrik%'

AND ( ort = 'Halle (Saale)' AND ( kategorie = '%modelle%' OR kategorie = '%transsexuelle%' ) ) OR ( ort = 'Leipzig' AND ( kategorie = '%events%' OR kategorie = '%dominas%'))

AND premium=1 LIMIT 0,24


Entweder es wird gar nichts ausgegeben oder die Anzeigen erscheinen doppelt
 
Also als erstes finde ich diese Klausel recht komisch "AND kategorie NOT LIKE '%rubrik%'" ... Gibt es denn eine Kategorie die "rubrik" heißt?oO

Und hast du schon mal versucht erstmal mit einem einfachen Select-Statement dich ranzutasten?
Im Sinne von: SELECT * FROM rex_db sedcards WHERE erole = '1' AND status='1'
Und dann die nächste Einschränkung rein zunehmen usw usw usw....?
So zum Beispiel taste ich mich ran... mir scheint auch so als wenn dein vorletztes AND probleme macht?!
 
Joo, Rubrik = Fachinserate wie Vermietung Stellenangebote etc.

Das rantasten habe ich auch schon probiert über PHPMA aber das Ergebnis ist immer dasselbe, bei der Kategorie Modelle werden trotzdem die Ort Leipzig und Halle angezeigt und Leipzig hat in Halle nichts zusuchen
 
Führ mal bitte folgendes Statement aus und berichte mal was rauskommt:

SELECT *
FROM rex_db sedcards
WHERE erole = '1' AND status = '1'
AND ((ort = 'Halle(Saale)' AND (kategorie LIKE '%Modelle%' OR kategorie LIKE '%Transsexuelle%' )) OR (ort = 'Leipzig' AND (kategorie LIKE '%events%' OR kategorie LIKE '%dominas%')))
 
Werbung:
Zurück
Oben