Ankündigung

Einklappen
Keine Ankündigung bisher.

UNION SELECT und MINUS in mysql

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • easyAnfaenger26
    hat ein Thema erstellt UNION SELECT und MINUS in mysql.

    UNION SELECT und MINUS in mysql

    Hallo,ich versuche verzweifelt ein MINUS hinzubekommen,welches in mysql nicht geht:
    PHP-Code:
    SELECT user_id FROM prof_img a WHERE p_img_visible=
    UNION DISTINCT 
    SELECT user_id FROM prof_text b WHERE p_text_visible
    =1
    MINUS
    SELECT user_id FROM account WHERE aktiv
    ="B" 
    ich habs auch versucht mit LEFT JOIN:
    PHP-Code:
    SELECT user_id FROM prof_img a WHERE p_img_visible=
    UNION DISTINCT 
    SELECT user_id FROM prof_text b WHERE p_text_visible
    =1
    LEFT JOIN account c
    ON a
    .user_id AND b.user_id
    WHERE c
    .aktiv="B" 
    Leider bekomme ich immer syntaxfehler
    vielleicht wisst ihr wie man das macht?

  • akretschmer
    antwortet
    Zitat von easyAnfaenger26 Beitrag anzeigen
    wow,das funktioniert DANKE
    schade das mysql so kompliziert ist..
    So lange Du noch einen Würgaround findest, ... aber MySQL ist nicht kompliziert sondern primitiv. Das macht den Umgang damit ab und an vielleicht kompliziert.

    Einen Kommentar schreiben:


  • easyAnfaenger26
    antwortet
    wow,das funktioniert DANKE
    schade das mysql so kompliziert ist..

    Einen Kommentar schreiben:


  • erc
    antwortet
    Zitat von tkausl Beitrag anzeigen
    Sollte man sowas nicht auch (meißtens) mit ner umgedrehten Where-Condition (+ joins wenn nötig) lösen können?
    Ganz Allgemein kannst du den Union auch in ein Subquery packen und den mit einem LEFT JOIN filtern.

    PHP-Code:
    SELECT
       o
    .*
    FROM
       
    (
         
    SELECT user_id FROM prof_img a WHERE p_img_visible=
         UNION DISTINCT 
         SELECT user_id FROM prof_text b WHERE p_text_visible
    =1
       
    ) AS o LEFT JOIN account c
    ON o
    .user_id c.user_id AND c.aktiv 'B'
    WHERE c.user_id IS NULL 

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von tkausl Beitrag anzeigen
    Das kannte ich wirklich noch nicht
    Sollte man sowas nicht auch (meißtens) mit ner umgedrehten Where-Condition (+ joins wenn nötig) lösen können?
    Was machst, wenn da 2 oder mehr Tabellen involviert sind? Ein UNION bekommst auch ned mit WHERE hin. Andere Baustelle halt.

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    Das kannte ich wirklich noch nicht
    Sollte man sowas nicht auch (meißtens) mit ner umgedrehten Where-Condition (+ joins wenn nötig) lösen können?

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von easyAnfaenger26 Beitrag anzeigen
    soll ich jetzt einfach zu postgreSQL wechseln
    Deine Entscheidung
    oder muss ich da umlernen,
    Ja. Plötzlich funktionieren die Dinge wie erwartet.
    bzw. geht das in phpmyadmin?
    Gar nicht. PMA ist nur ein (beschissener) Client.

    Einen Kommentar schreiben:


  • easyAnfaenger26
    antwortet
    ja ich hab mysql in xampp.
    soll ich jetzt einfach zu postgreSQL wechseln oder muss ich da umlernen,bzw. geht das in phpmyadmin?

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von easyAnfaenger26 Beitrag anzeigen
    Darus folgt: abfrageA - abfrage B ergibt die Menge die ich haben will.
    Minus oder Exept. Falls Du MySQL hast: das kann keines davon.

    Einen Kommentar schreiben:


  • easyAnfaenger26
    antwortet
    Zitat von tkausl Beitrag anzeigen
    Die Fehlermeldung ist natürlich total uninteressant...
    Falls das nicht ironisch gemeint war:
    #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 'LEFT JOIN account c
    ON a.user_id AND b.user_id
    WHERE c.aktiv="B"

    Einen Kommentar schreiben:


  • easyAnfaenger26
    antwortet
    Zum besseren Verständnis:
    Also die Abfage soll aus den tabellen prof_img und prof_text die user ids finden,welche bei der den status 1 haben,wobei es genügt,wenn einer der beiden diesen status besitz(UNION DISTINCT).Dann möchte ich allerdings noch alle ids auschließen die gerade bearbeitet ("B") sind.
    Darus folgt: abfrageA - abfrage B ergibt die Menge die ich haben will.

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von tkausl Beitrag anzeigen
    Was soll denn ein "Minus" Sein?
    https://www.google.de/?gws_rd=ssl#q=sql+minus

    Einen Kommentar schreiben:


  • Tropi
    antwortet
    Am einfachsten wäre wohl ein Sub-Query mit einem NOT IN() statt dem MINUS.

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    Was soll denn ein "Minus" Sein?
    Leider bekomme ich immer syntaxfehler
    Die Fehlermeldung ist natürlich total uninteressant...

    Einen Kommentar schreiben:

Lädt...
X