tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von einfach nur crack
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
337
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DonDemf DonDemf ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    189
    Hey Leute,
    ich habe 2 Tabellen. Einmal "fifa_spieler" und "fifa_spieler_2".
    fifa_spieler hat circa 4tausend datensätze und fifa_spieler_2 circa 14tausend.


    Die spalten sind identisch.
    verein, name, vorname, starke, position, ........

    Nun haben alle spieler bei fifa_spieler_2 den verein "Computer". Bei fifa_spieler sind die 4tausend Spieler schon den richtigen Vereinen zugeordnet.

    Nun möchte ich die tabellen vergleichen und alle spieler von fifa_spieler_2 den richtigen Vereinen wie bei fifa_spieler zuordnen.

    dann wären 4tausend spieler von fifa_spieler_2 richtig und die restlichen 10k noch bei Computer.

    Ich hoffe mein anliegen ist klar geworden.

    Mein Gedankenansatz wäre eine abfrage in der art:
    Code :
    1
    
    if(fifa_spieler_vorname & fifa_spieler_name == fifa_spieler_2_vorname & fifa_spieler_2_name) dan update....
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ein einfaches UPDATE mit 2 Tabellen
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    UPDATE 
        fifa_spieler_2 AS fs2,
        fifa_spieler AS fs
    SET
        fs2.verein = fs.verein
    WHERE
        fs2.name = fs.name
        AND fs2.vorname = fs.vorname
        -- TODO: Alle weiteren identischen Felder auflisten
    DonDemf bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    DonDemf DonDemf ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    189
    Danke mein Held Genau so wie ich es mir gedacht habe

    Nun noch eine Frage:
    ich habe zu jedem Spieler ein Bild auf dem Webserver. Die Bilder heißen wie die ID des spielers und werden ausgegeben mit:

    <img src="images/SPIELERID.gif">

    Allerdings habe ich nicht für alle Spieler ein bild. Wie kann ich es überprüfen, ob es kein Bild gibt. Wenn es kein Bild gibt, dass soll es 0.gif sein?
     

  4. #4
    Avatar von Raisch
    Raisch Raisch ist offline extraordinary bit
    Registriert seit
    Aug 2011
    Ort
    Berlin
    Beiträge
    333
    Was Du brauchen könntest sind diese beiden Funktionen:
    1. file_exists
    2. is_file

    Gruß
     

  5. #5
    DonDemf DonDemf ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    189
    Wie mache ich es den, mit ungefähren namen?
    PHP-Code:
    $sql 'UPDATE 
        fifa_spieler_2 AS fs2,
        fifa_spieler AS fs
    SET
        fs2.verein = fs.verein
    WHERE
        fs2.name = %fs.name%
        AND fs2.vorname = %fs.vorname%'
    ;
        
    $update mysql_query($sql); 
    Fehler:
    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 '%fs.name% AND fs2.vorname = %fs.vorname%' at line 7
     

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
    [PHP] [MySQL] Debug Queries
    Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.

    Du hast da 2 Fehler drin.
    1) Es fehlen insgesammt 4 " in deinem SQL
    2) Zum Teilstrings vergelichen nimmt man LIKE anstelle von =

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    
    UPDATE 
        fifa_spieler_2 AS fs2,
        fifa_spieler AS fs
    SET
        fs2.verein = fs.verein
    WHERE
        fs2.name LIKE "%fs.name%"
        AND fs2.vorname LIKE "%fs.vorname%"

    Aber Achtung.:
    Code :
    1
    2
    3
    4
    5
    
    fs2   | fs1   | Treffer
    -----------------------
    Hans  | Hansi | x
    Hans  | Hans  | x
    Hansi | Hans  | -
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  7. #7
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.961
    Dafür gibt es LIKE:
    Code SQL:
    1
    2
    3
    4
    5
    6
    7
    8
    
    UPDATE 
        fifa_spieler_2 AS fs2,
        fifa_spieler AS fs
    SET
        fs2.verein = fs.verein
    WHERE
        fs2.name LIKE "%fs.name%"
        AND fs2.vorname LIKE "%fs.vorname%"
    DonDemf bedankt sich. 
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  8. #8
    DonDemf DonDemf ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    189
    Weil das Update jedes mal abkackt, habe ich probiert das update weiter einzuschränken.

    PHP-Code:
    <?php

    $sql 
    'UPDATE 
        fifa_spieler_dondemf AS fs2,
        fifa_spieler AS fs
    SET
        fs2.verein = fs.verein
    WHERE
        fs2.name LIKE "%fs.name%"
        AND fs2.vorname LIKE "%fs.vorname%" 
        AND fs2.starke >= "80"'
    ;
        
    $update mysql_query($sql);
        
        
        if(
    $update==TRUE) {
            echo 
    'done'; } else {
                
                echo 
    mysql_error();
                echo 
    $sql;
                
    var_dump($update);
                
            }

    ?>
    Doch leider kackt der Server auch hier weiterhin ab... Jemand ne idee wie ich das lösen könnte?

    Wenn ich das Update in der SQL Konsole von phpmyadmin mache, läuft es durch, aber es werden keine Updates durchgeführt:

    PHP-Code:
    UPDATE 
        fifa_spieler_dondemf 
    AS fs2,
        
    fifa_spieler AS fs
    SET
        fs2
    .verein fs.verein
    WHERE
        fs2
    .name LIKE "%fs.name%"
        
    AND fs2.vorname LIKE "%fs.vorname%"
    Der Weg mit den % soll sehr unpraktisch sein, da:

    Beispiel:
    Verein 1 | Karl-Heinz Müller-Schmidt
    Verein 2 | Karl Müller

    "Karl-Heinz Müller-Schmidt" wird Verein2 zugeordnet.

    Bei Doppelnamen scheint es nicht zu funktionieren...
    bzw. es kommt zu Fehlern.

    Mir wurde zu einem JOIN geraten, aber ich habe keine Ahnung, wie ich das lösen soll :S
    Geändert von DonDemf (13.02.12 um 02:05 Uhr)
     

  9. #9
    DonDemf DonDemf ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    189
    Niemand mehr eine Idee?
     

  10. #10
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ein JOIN ist eine andere Schreibweise von dem was wir bereits haben. Gibt aber dieselben Resultate wieder.
    Das Problem ist, es gibt keinen mechanismus den du einbauen kannst der zu 100% versch. geschriebene Namen einander zuordnen kannst. Du kannst alle Eindeutigen zuordnen. Dann kannst du 'SOUNDS LIKE' noch vorschläge machen. Aber diese muss man unbedingt von Hand überprüfen!

    SOUNDS LIKE:
    http://dev.mysql.com/doc/refman/5.1/...functions.html Unter SOUNDEX()
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Datei abgleich zwischen 2 PCs
    Von bernd00 im Forum Java
    Antworten: 5
    Letzter Beitrag: 17.05.11, 13:09
  2. 100ms timeout bei update(Graphics g) / oder update() bricht update() ab?
    Von AGSzabo im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 19.11.08, 18:37
  3. VB-Access Abgleich
    Von EuRaS im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 15.04.08, 18:20
  4. Abgleich von 2 Tabellen
    Von JamesT im Forum PHP
    Antworten: 12
    Letzter Beitrag: 12.01.08, 20:17
  5. Automatischer Abgleich von zwei mysql Datenbanken
    Von jenno im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 14.02.05, 13:13