1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Verschachtelte SQL Abfrage

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von majas, 11 Dezember 2017.

  1. majas

    majas Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Erwartest Du, daß das jemand versteht, was Du da willst?
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Ach ja. Falls jemand Hintergrundinfos dazu sucht: Verschachtelte SQL Abfrage - php.de

    Für den Fragesteller: Bitte Forenregeln bzgl. Crosspostings beachten. Und auch die im anderen Forum genannten Hinweise.
     
  4. Chuky666

    Chuky666 Datenbank-Guru

    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
     
  5. majas

    majas Benutzer

  6. Chuky666

    Chuky666 Datenbank-Guru

    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
     
  7. majas

    majas Benutzer

    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
     
  8. majas

    majas Benutzer

    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
     
  9. Chuky666

    Chuky666 Datenbank-Guru

    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?!
     
  10. majas

    majas Benutzer

    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
     
  11. Chuky666

    Chuky666 Datenbank-Guru

    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%')))
     
  12. majas

    majas Benutzer

    Melde mich heute Abend oder Morgen früh nochmal mit dem Ergebniss
     
  13. majas

    majas Benutzer

    Über PHP MY Admin scheint es zu funktionieren, baue es Morgen mal ins CMS mit ein. Mal schauen was da raus kommt :)
     
  14. majas

    majas Benutzer

    Im CMS scheint es auch zu funktionieren - Ganz vielen lieben Dank :) :)
     
  15. Chuky666

    Chuky666 Datenbank-Guru

    Moin moin,

    freut mich zu hören. Wie wäre es wenn du dein Script hier mal zeigst, das vllt. auch andere davon profitieren?! ;)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden