Wie ? - Mysql Abfrage

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

  • Wie ? - Mysql Abfrage

    Hallo,

    ich brauche mal einen Rat.

    Ich muß eine Abrage nach IDs starten - es sollen mir alle ids zurückgegeben werden, die bestimmte Eigenschaften enthalten.

    Es können bis zu 20 Eigenschaften sein, die aus 4 verschiedenen Tabellen gelesen werden.
    D.H. es kann schon ein sehr großer SQL-Abfragestring werden !

    So jetzt kommt mein Problem.
    In den Ausgelesenden IDs wird es IDs geben nach denen nicht gesucht wird.
    Das Problem ist, sie sind verstreut und es können von
    0 bis1000 oder vielleicht auch 2000 Ids sein !

    Ich habe mir jetzt zwei Möglichkeiten überlegt. entweder packe ich sie mit den den Abfragestring - da glaube ich aber das Mysql überlastet werden kann.
    Oder ich erstelle mit den Abfragestring eine temp tabelle im Ram und lösche dann in einer Schleife die IDs raus.

    Was meint Ihr welches ist schneller und der bessere Weg ?
    Oder gibt es noch eine 3 Möglichkeit ?
    Ach so die IDs die nicht gefunden werden sollen, sind in einer extra tabelle aufgeführt. Kann man diese veilleicht dazu verweden die Ids nicht zu finden ?

    Gruß und Danke

    Tago
    --------------------------------------
    Nachts is kälter als draußen !

  • #2
    ich würde es mit einer großen SQL-Abfrage versuchen, dafür ist MySQL und andere RDBMS ja wohl da.

    da mySQL kein OUTER JOIN kann, mußte wohl sowas nehmen, um ID's auszuschließen

    PHP-Code:
    SELECT .. FROM tab_mit_ids
    LEFT JOIN tab_gesperrte_ids ON 
    (tab_mit_ids.id=tab_gesperrte_ids.id and tab_gesperrte_ids.id is null
    und wegen der großen Abfrage mach dir mal kein Kopf,

    meine größte ging über 19 Tabellen und war 2300 Zeichen lang
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Hi,

      bei mir klappt das nicht !

      Ich versuche also

      SELECT .. FROM tab_mit_ids LEFT JOIN tab_gesperrte_ids ON (tab_gesperrte_ids.subid=3 AND tab_mit_ids.id=tab_gesperrte_ids.id and tab_gesperrte_ids.id is null)

      Dabei ist zu beachten, dass ich nur nicht die ids aus der tab_gesperrte_ids haben möchte, die eine bestimmte tab_gesperrte_ids.subid haben wie hier z.B. 3

      Es sollen also alle Ids von tab_mit_ids zurückgegeben werden, außer die ids die in tab_gesperrte_ids mit der subid=3 stehen !

      Aber mysql gibt mir immer alle ID von tab_mit_ids zurück und die tab_gesperrte_ids.id setzt er einfach mit NULL dahinter !

      Bitte um hilfe !

      Danke
      Gruß
      Tago
      --------------------------------------
      Nachts is kälter als draußen !

      Kommentar

      Lädt...
      X