select mit subquery: ...where id1 != id2 ...

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

  • select mit subquery: ...where id1 != id2 ...

    Hallo!

    Ich brauche hilfe bei einer Query.
    Ich habe eine Tabelle mit den Spalten id, alert und andere.
    Jetzt habe ich eine query, die mir genau 300 datensätze aus dieser Tabelle rausfischt, die von dem ganzen NICHT betroffen sind. Ich kann diese 300 Datensätze auch nur durch diese Query rausfinden. Wenn unter 300 Datensätzen in der Tabelle sind, soll sich das ganze erledigt haben (rückgabe ""). Wenn über 300 Datensätze vorhanden sind, soll von diesen anderen betroffenen Datensätzen (die nicht innerhalb der 300 erfasst sind) diejenigen ausgewählt werden, bei denen bei alert der Wert "1" steht (und nicht "0" oder ""). Ich hoffe das war einigermassen verständlich..
    Versucht habe ich das so:
    PHP-Code:
    SELECT id1id2
    FROM
        
    (SELECT id as id1
         FROM table
         
    // WHERE blabla, das hier ist ebend die query, die mir die 300 speziellen datensätze raussucht
         
    LIMIT 300)
         as 
    temp1,
        (
    SELECT id as id2alert as alert1
         FROM table
    )
         as 
    temp2
    WHERE id1 
    != id2 and alert1 '1' // und das klappt nicht, weil dann der join misslingt 
    Die Subquery 2 gibt mir ja sämtliche id´s von der tabelle zurück. Von diesen müssten dann die "gelöscht" werden, die mit der subquery 1 erfasst wurden. Und von den dann erhaltenen die auswählen, die bei alert eine 1 stehen haben.

    Mfg,
    Stefan

  • #2
    probier mal
    WHERE temp1.id1 != temp2.id2 and temp2.alert1 = '1'

    @admins & mods
    Könnte ich evtl. wieder einen ganz normalen Userstatus bekommen? Bin langsam zu alt für den jetzigen.
    Zuletzt geändert von XGremliN; 06.12.2006, 08:31.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      @ XGremliN
      Das ist leider das gleiche in grün, der join schlägt dann genauso fehl, aber danke für deine Antwort! )

      @ all
      Hat niemand eine andere idee, oder mache ich irgendwas falsch? Fehlt irgend eine info?

      Kommentar


      • #4
        Re: select mit subquery: ...where id1 != id2 ...

        Versuch das ganze doch mal in einer sinnvollen Reihenfolge ...
        Die Subquery 2 gibt mir ja sämtliche id´s von der tabelle zurück. Von diesen müssten dann die "gelöscht" werden, die mit der subquery 1 erfasst wurden.
        Also SELECT ALLE AUSSER DIE, DIE SUBQUERY LIEFERT.
        NOT IN dürfte ein gutes Stichwort sein.
        Und von den dann erhaltenen die auswählen, die bei alert eine 1 stehen haben.
        Nee, nicht anschließend welche rauswerfen, sondern gleich von vornherein nur die richtigen selektieren.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Also ich bin jetzt schon stundenlang zugange, komme aber nicht auf das ergebnis.

          Nach deinem Tip habe ich nun folgendes Versucht:
          PHP-Code:
          SELECT id
          FROM tabelle
          WHERE id NOT IN 
                    
          (SELECT id
                     FROM tabelle
                     WHERE 
          // blabla, das hier ist ebend die query, die mir die 300 speziellen datensätze raussucht
                     
          LIMIT 300)
                AND 
          alert '1' 
          Das würde ja rein theoretisch funktionieren, wenn da nicht folgende Fehlermeldung wäre:
          This version of MySQL does not yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
          Die Fehlermeldung ist eigendlich eindeutig. Aber wie soll ich das sonst machen? Ohne das Limit komme ich nicht aus!
          Hat jemand eine Idee? Oder habe ich da was falsch verstanden?

          Mfg,
          Stefan

          Kommentar


          • #6
            Hat keiner eine Idee?

            Kommentar


            • #7
              Wüsste nur was mit 2 Queries ...
              PHP-Code:
              $array "Deine300Saetze";
              $query "SELECT id
              FROM tabelle
              WHERE id NOT IN (" 
              implode("," $array) .")"

              Kommentar

              Lädt...
              X