php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 17-04-2008, 17:58
CosmoPhobia
 Newbie
Links : Onlinestatus : CosmoPhobia ist offline
Registriert seit: Mar 2008
Beiträge: 38
CosmoPhobia ist zur Zeit noch ein unbeschriebenes Blatt
Standard einen von mehreren identischen Datensätzen aus DB löschen

Hallo liebe Community.

Ich stelle mir gerade die Frage, wie ich folgendes am besten löse:

Ich habe eine Tabelle, in der viele identische Datensätze sind, die nur anhand der ID (auto_increment) zu unterscheiden sind. Jetzt möchte ich einen dieser identischen Datensätze gerne löschen.

Beispiel:
+--id--+--user--+--item--+
+--1--+---15---+----7----+
+--2--+---15---+----7----+
+--3--+---15---+----7----+
+--4--+---15---+----7----+
+--5--+---15---+----7----+
+--6--+---15---+----7----+

Einen dieser 6 Einträge möchte ich nun löschen. Mir persönlich ist es egal, welchen. Sinn und Zweck ist der, dass sich in meiner Abfrage, wieviele Items einer Art der User hat, die Summe um 1 verringert.

Möchte gerne mal von euch wissen, wie ihr das machen würden. Nur Ideen, keinen Code. Ich danke euch schonmal.
Mit Zitat antworten
  #2 (permalink)  
Alt 17-04-2008, 18:02
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo!

Mache eine Abfrage der Tabelle und lies die id aus,die schreibst in ein hidden feld und dann machst den delete mit so eine wehre clausel

where id=".$_POST['id']."

Verraussetzung ist natürlich du liest entsprechen dafür nach der gewünschten id aus!


mfg der Litter
Mit Zitat antworten
  #3 (permalink)  
Alt 17-04-2008, 20:30
case
 Registrierter Benutzer
Links : Onlinestatus : case ist offline
Registriert seit: Mar 2007
Beiträge: 265
case ist zur Zeit noch ein unbeschriebenes Blatt
case eine Nachricht über ICQ schicken
Standard

Hallo,

ich denke dies kann man auch in einem Query lösen.

ein Delete mit einem dependent Subquery. Du überprüfst bei jeder Id die Anzahl der Datensätze, die identisch sind..... Und so überprüfst du ob du den Datensatz nun löschst oder nicht.

hmm ok, das würde aber alle doppelten bis auf einen löschen......

aber ich verstehe um ehrlich zu sein auch nicht 100%ig worauf du hinaus willst. Ist das die Anzahl der Items oder eine Art item id?

ist es eine item-id so würde ich ein zusätzliches Feld "anzahl" machen, du gruppierst immer die einzelnen Items und kannst dann einfach die anzahl eins runtersetzen. So sparst du vor allen dingen viel viel Platz, die DB wird schneller, die Abfragen einfacher und alles ist Toll
Mit Zitat antworten
  #4 (permalink)  
Alt 17-04-2008, 20:50
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja, genau, ich hätte da auch ein feld 'anzahl' drangehängt.

ansonsten: DELETE from tabelle WHERE user = 15 AND item = 7 LIMIT 1
Mit Zitat antworten
  #5 (permalink)  
Alt 17-04-2008, 22:21
CosmoPhobia
 Newbie
Links : Onlinestatus : CosmoPhobia ist offline
Registriert seit: Mar 2008
Beiträge: 38
CosmoPhobia ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank für eure Vorschläge.
Die 7 steht für eine Art item_id.

Ich kann verstehen dass ihr vielleicht etwas verwirrt seid, warum ich denn jedes item in eine separate Zeile schreibe. Ich hatte es vorher anders, nämlich mit der Menge, so hatte ich für ein item nur eine Zeile pro User.
Aber ich verrate euch gerne, was dahinter steckt. Und zwar möchte ich die einzelnen Items nachher auf einer eigenen Seite mit den IDs auflisten lassen, und für jedes Item wird dann ein timestamp in die DB geschrieben...daher auch für jedes Item eine Zeile.

Da erschien mir die jetzige Lösung am optimalsten, oder...
Mit Zitat antworten
  #6 (permalink)  
Alt 19-04-2008, 09:10
CosmoPhobia
 Newbie
Links : Onlinestatus : CosmoPhobia ist offline
Registriert seit: Mar 2008
Beiträge: 38
CosmoPhobia ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von CosmoPhobia
Da erschien mir die jetzige Lösung am optimalsten, oder...
Sagt doch mal, mach ich es mir mit meiner Tabelle etwa zu umständlich ?
Mit Zitat antworten
  #7 (permalink)  
Alt 19-04-2008, 20:21
case
 Registrierter Benutzer
Links : Onlinestatus : case ist offline
Registriert seit: Mar 2007
Beiträge: 265
case ist zur Zeit noch ein unbeschriebenes Blatt
case eine Nachricht über ICQ schicken
Standard

aber dann musst du doch auch wissen welches item mit welchem Timestamp du löschen möchtest!!!

oder du löschst immer das item mit dem höchsten oder niedrigsten timestamp oder so... aber sonst würdest du ja ein beliebiges, zufälliges item löschen
Mit Zitat antworten
  #8 (permalink)  
Alt 20-04-2008, 21:02
CosmoPhobia
 Newbie
Links : Onlinestatus : CosmoPhobia ist offline
Registriert seit: Mar 2008
Beiträge: 38
CosmoPhobia ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Genau so ist es. Ich lösche in dem Falle einfach willkürlich ein Item, es wird aber vorher gesprüft ob es ein item ist, welches einen timstamp hat. Auch der Timestamp wird in dem Falle willkürlich an irgendein item vergeben.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:49 Uhr.