Frage zu spezieller SQL Abfrage

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

  • Frage zu spezieller SQL Abfrage

    Hallo!

    Ich habe eine Liste von Nummern in einer Datei, die ich gern mit der Datenbank abgleichen möchte.

    Dabei möchte ich ein Select ausführen, welches mir alle Nummern der Datei (!) wiedergibt, die NICHT in der Datenbank vorhanden sind. Gibt es da eine performante Möglichkeit als jede einzelne Nummer (können mehrere 100.000 sein) zu prüfen?

    Danke schonmal.
    Zuletzt geändert von F4llen4ngel; 10.12.2009, 10:35.

  • #2
    Hallo,

    du kannst die Datei (ist ja sicher eine CSV-artige) in eine temporäre DB-Tabelle laden, dann vergleichen und dann die Temptable droppen. Ist imho die schnellste Variante.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Lege eine weitere (Temp) Tabelle in der Datenbank an. Importiere die Nummern dorthinein.

      Frage nun die Datenbank ...

      Code:
      SELECT
      	nummern
      FROM
      	vorhandener_tabelle
      WHERE
      	nummern NOT IN
      		SELECT
      			nummern
      		FROM
      			neue_tabelle


      EDIT:
      Amica war schneller beim Tippen ...
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Schneller geht's mal wieder mit dem negativen Left Join:

        Code:
        select temp.nummer
        from `die temporäre Tabelle` as temp
        left join `die vorhandene Tabelle` as vorh on
            vorh.nummer = temp.nummer
        where vorh.id is null
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Danke schon mal für die Antworten.

          Gäbe es evtl. auch eine Möglichkeit das ganze zu lösen ohne eine temporäre Tabelle anlegen zu müssen?

          Kommentar


          • #6
            Die Möglichkeit besteht, aber dann fängst du wieder mit Vergleichen auf Dateiebene an und du wolltest ja was schnelleres

            Nur zum besseren Verständnis: Was ist das Problem mit einer temporären Tabelle?
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Ich arbeite nicht mit PHP sondern mit JAVA und der Hibernate Schnittstelle für Datenbanken. Heißt ich weiß nicht welche Datenbank hinter der Software liegt und kann unter Umständen kein natives SQL absetzen.

              Kommentar


              • #8
                Dann musst du offenbar den langsameren Weg wählen ....
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar

                Lädt...
                X