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 20-03-2005, 23:07
skalu
 Member
Links : Onlinestatus : skalu ist offline
Registriert seit: May 2003
Ort: Wien
Beiträge: 362
skalu ist zur Zeit noch ein unbeschriebenes Blatt
skalu eine Nachricht über ICQ schicken
Standard Doppelten Eintrag in relation zu anderer Spalte

Hi Leute!

Entschuldigt den eigenartigen Betreff, aber ich habe keine Ahnung, wie das kurz zu erklären ist

Also: Ich habe eine Auftragstabelle, in der pro Artikel ein Datensatz steht. Nun möchte ich prüfen, ob es eine Auftragsnummer mehrfach gibt --> natürlich gibt's die mehrfach, weil es ja pro Artikel einen Datensatz gibt, also bei einem Auftrag von 10 Artikeln gibt es die Auftragsnummer 10 Mal.

Nun könnte ich aber über den Auftrags-Timestamp das Ganze prüfen. Die Auftragsnummer darf es nicht mit mehr als einem Timestamp geben (also z.B. nicht 2 unterschiedliche), nur weiß ich nicht, wie ich das mit SQL lösen kann.

Also z.B. Auftragsnummer 40003 gibt es 10 Mal mit dem Timestamp 1111355902. Jetzt darf es aber die Nummer 40003 nur mit dem Timestamp 1111355902 geben, da es sonst zwangsläufig ein anderer Auftrag wäre.

Ist das mit SQL lösbar?
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 20-03-2005, 23:38
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du möchtest prüfen, ob es eine Auftragsnummer mit unterschiedlichen Timestamps gibt?

SELECT COUNT( * ) FROM tabelle WHERE auftragnummer = 4003 AND timestamp != der_richtige_timestamp


würde dir zählen wie oft es diese falschen einträge gibt....
Mit Zitat antworten
  #3 (permalink)  
Alt 21-03-2005, 07:38
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Und wenn du das nicht für jede Auftragsnummer machen möchtest...

Code:
SELECT 
  aufnr,
  COUNT(DISTINCT datum) fehler
FROM auftraege
GROUP BY aufnr
HAVING fehler > 1
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #4 (permalink)  
Alt 21-03-2005, 11:48
skalu
 Member
Links : Onlinestatus : skalu ist offline
Registriert seit: May 2003
Ort: Wien
Beiträge: 362
skalu ist zur Zeit noch ein unbeschriebenes Blatt
skalu eine Nachricht über ICQ schicken
Standard

Toll danke euch beiden! Es funktioniert!

@mrhappiness

Mir ist nur nicht ganz klar, wieso Ich habe mal nachgelesen, was DISTINCT macht. Es verhindert, dass Einträge doppelt ausgelesen werden, richtig? Was ist dann der Unterschied zu GROUP BY?

Und in "fehler" wird nur der Wert von count(DISTINCT datum) temporärgespeichert, oder? Gehört da nicht ein "as fehler" hin?

Danke dir!

Greetz Lukas
Mit Zitat antworten
  #5 (permalink)  
Alt 21-03-2005, 11:51
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Hallo,

mir kommt deine Vorgehensweise etwas holprig vor. Was ist z.B. wenn bei dem Insert des Auftrags der Server unter Last steht und das ganze mal etwas langsamer abgeht, dann könnte es sein, dass die Aufträge mit der gleichen Auftragsnummer einen unterschiedlichen Timestamp erhalten obwohl sie doch zusammengehören.

Die Art und Weise wie du zusammengehörige Artikel zu einem Auftrag erkennen willst würde ich mir nochmal überlegen. Du solltest einfach am besten dafür sorgen dass die '10' aus deinem Beispiel kein zweites mal mehr vorkommen kann.

Gruss
Quetschi
Mit Zitat antworten
  #6 (permalink)  
Alt 21-03-2005, 11:55
skalu
 Member
Links : Onlinestatus : skalu ist offline
Registriert seit: May 2003
Ort: Wien
Beiträge: 362
skalu ist zur Zeit noch ein unbeschriebenes Blatt
skalu eine Nachricht über ICQ schicken
Standard

@Quetschi

Danke für deinen Hinweis! Theoretisch hast du Recht. Aber die Aufträge werden lokal auf einem Computer erfasst und dann erst über ein Textfile übertragen. Und es wird auch zu 99,9% nie vorkommen, dass es eine Auftragsnummer wirklich mehrfach gibt, aber prüfen möchte ich das trotzdem. Maximal kann es sich da um 1-2 Sekunden Zeitdifferenz handeln und das könnte ich dann manuell prüfen!

Aber trotzdem vielen Dank! Daran hätte ich nicht gedacht!

Greetz Lukas
Mit Zitat antworten
  #7 (permalink)  
Alt 21-03-2005, 11:59
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von skalu
Ich habe mal nachgelesen, was DISTINCT macht. Es verhindert, dass Einträge doppelt ausgelesen werden, richtig? Was ist dann der Unterschied zu GROUP BY?
mit DISTINCT bekommst du jede eindeutige Kombination nur genau einmal.
Mit GROUP BY kannst du Datensätze gruppieren undd abei z. B. zählen.

Ohne das DISTINCT würde mysql zählen, wieviele Datensätze es pro Auftragsnummer gibt. Durch das DISTINCT wird ein Datensatz dabei nicht mehr berücksichtigt, wenn er (bezühlich der Timestampspalte) bereits einmal miteinbezogen wurden.
mysql zählt also die Anzahl verschiedener Timestamps je Auftragsnummer.

Zitat:
Und in "fehler" wird nur der Wert von count(DISTINCT datum) temporärgespeichert, oder?
Ja
Zitat:
Gehört da nicht ein "as fehler" hin?
Nein
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #8 (permalink)  
Alt 21-03-2005, 12:01
skalu
 Member
Links : Onlinestatus : skalu ist offline
Registriert seit: May 2003
Ort: Wien
Beiträge: 362
skalu ist zur Zeit noch ein unbeschriebenes Blatt
skalu eine Nachricht über ICQ schicken
Standard

alles klaro, danke!
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

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Formmailer v1.7.0 Bootstrap 4

Formmailer v1.7.0 Bootstrap wurde extra für Bootstrap entwickelt. Mit Bootstrap kann man schnell und einfach kleine oder große Projekte entwickeln, die auf Geräten in allen erdenklichen Formen funktionieren.

16.04.2020 arne-home | Kategorie: PHP/ Formular
Upload v1.1.0 Bootstrap

Mit dem PHP - Uploadscript kann man schnell und einfach Bilder und Dateien auf den Webserver hochladen.

16.04.2020 arne-home | Kategorie: PHP/ File
Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:28 Uhr.