DELETE FROM problem

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

  • DELETE FROM problem

    hallo,
    ich schreibe gerade einen ligamanager.

    meine tabellen sehen so aus:

    [teams] -> id,liga,name,spiele,unentschieden,niederlage,geschossen,
    bekommen,punkte

    [spiele] -> id,runde,datum,hteam,htore,haufstellung,hschuetzen,hgelb,hrot,
    ateam,atore,aaufstellung,aschuetzen,agelb,arot,bericht,infos

    alle spiele der 1. liga anzeigen:

    SELECT s.runde,s.hteam,h.name,s.ateam,a.name FROM spiele s, teams h, teams a WHERE ( (s.hteam = h.id) AND (s.ateam = a.id) ) AND ( (h.liga = 1) OR (a.liga = 1) )

    wie würde das DELETE FROM dazu aussehen?

    ich komm einfach nicht drauf....

    mfg

  • #2
    genauso? nur dass du keine einzelnen spalten eines datensatzes löschen kannst sondern immer nur eien gesamten datensatz (delete * from...)
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      @happy
      DELETE FROM ist schon richtig ...

      @proschi
      da mysql kein löschen von datensätzen über mehrere tabellen unterstützt, musst du in jeder tabelle des datensatz separat löschen.

      für jeder der tabellen musst du ein DELETE FROM machen.

      DELETE FROM teams WHERE id = '...';
      DELETE FROM spiele WHERE id = '...';

      du solltest aber ein feld des datensatzes nehmen, welches eindeutig ist. mit
      DELETE FROM teams;
      ist alles futsch ....
      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
        bei der tabelle teams wäre das ja auch kein problem, aber bei der tabelle spiele hab ich keine liga-id, d.h. ich muss den weg über die spielenden mannschaften gehen.....

        wenn ich folgendes mache:

        DELETE FROM spiele s WHERE ( (s.hteam = h.id) AND (s.ateam = a.id) ) AND ( (h.liga = 1) OR (a.liga = 1) )

        dann kann ich keine zwei verschiedenen aliases auf dieselbe tabelle (teams) für heim- und auswärtsmannschaft machen....und das durchschau ich nicht ganz....ich kann doch nicht einfach statt h.id und a.id beidemale teams.id nehmen.....

        mfg

        Kommentar


        • #5
          dann solltest du dir mal eine neue struktur für deine tabellen ausdenken. wenn du noch nicht einmal einen datensatz gezielt korrekt löschen kannst, ist das nämlich sch..... !
          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


          • #6
            ich glaube ja das es geht, nur weiss ich nicht wie....
            die einzige sinnvolle änderung wäre, das ich in die tabelle spiele ebenfalls die liga-id aufnehme, das wollte ich zuerst aber nicht, da ich dann ja ein und die selbe information doppelt gespeichert habe.....

            außerdem muss es doch möglich sein, das ich für eine funktionierende SELECT abfrage auch eine DELETE FROM abfrage finde, oder?

            wenn das eine geht muss doch das andere auch gehen.....

            mfg

            Kommentar


            • #7
              Original geschrieben von proschi
              [...]das wollte ich zuerst aber nicht, da ich dann ja ein und die selbe information doppelt gespeichert habe.....[...]
              das wäre aber genau die lösung deines problems denke ich. damit kannst du auch JOINen und wenn die liga-id absolut eindeutig ist, auch entsprechend die datensätze DELETEn. da das feld nur ein zahlenfeld ist, ist es absolut kein Problem, was die Kapazität der DB angeht.
              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


              • #8
                von der kapazität her würde es sowieso keine probleme geben, aber ich dachte (hab ich überall gelesen) das das eine der wichtigsten grundsätze ist: nie eine information doppelt abspeichern....
                aber gut, so ist das natürlich kein problem.....

                mfg

                Kommentar


                • #9
                  das ist schon richtig, keine infos doppelt zu speichern.

                  aber wie willst du tabellen zueinander relational darstellen, wenn du kein feld in den tabellen hast, womit eine verknüpfung beider möglich ist?

                  wenn du es sinnvoll schaffst, sag bescheid.
                  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


                  • #10
                    naja, über die tabelle teams (in der die liga abgespeichert ist) kann ich ja schauen zu welcher liga das spiel gehört (sonst würde ja die SELECT abfrage nicht funktionieren)....ich hab bis jetzt immer geglaubt (und tu es immer noch), das man jede SELECT abfrage auch auf eine DELETE FROM abfrage übertragen können muss....


                    mfg

                    Kommentar


                    • #11
                      klar kann man das übertragen. aber nur, wenn es EINE TABELLE ist..

                      sobald du mehrere tabellen hast, in denen die daten verteilt sind, brauchst du mehrere DELETEs.
                      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


                      • #12
                        ....und sobald ich mehrere DELETE's brauche, brauche ich auch in jeder tabelle die möglichkeit die datensätze eindeutig zu identifizieren.....

                        ich glaub jetzt hab ichs.....

                        kann man das dann durch eine geschickte struktur auch irgendwie so hinkriegen, das man keine daten doppelt abspeichern muss und trotzdem alles SELECT'en und DELETE'n kann? oder ist das in mysql eben einfach nicht möglich.....

                        mfg

                        Kommentar


                        • #13
                          du kannst alles in eine tabelle schreiben. aber dadurch geht dir die funktionalität der DB flöten. also irgnorier den satz wieder.

                          suche mal nach JOIN im sql-forum und filter nach posts von mir. irgendwo habe ich da jemanden was für einen verein oder was auch immer erstellt.

                          daraus wirst du bestimmt auch noch was lernen können. es ging nämlich genau um das gleiche...
                          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