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 26-09-2006, 15:43
Cyberphantom
 Newbie
Links : Onlinestatus : Cyberphantom ist offline
Registriert seit: Sep 2006
Beiträge: 19
Cyberphantom ist zur Zeit noch ein unbeschriebenes Blatt
Question komplexe SQL Abfrage

Hallo,

ich habe ein Programm geschrieben, welches mir eine Logdatei auswerten soll. Die Datensätze sind in einer DB gespeichert. Mein Problem ist, dass ich in einer Tabelle alle Installationroutinen gespeichert habe. Bei der Installation können verschiedene Pakete installiert werden. Ich brauche aber zu jedem Gerät nur das neuste Paket von jeder Sorte. Bsp.:

Seriennummer Install Major Minor Build Datum Uhrzeit
60109102 printlayouts 1 0 6 2006.09.11 14:25:22 x
60109102 tariff_data 89 0 4 2006.09.11 14:25:48 x
60109110 printlayouts 1 0 6 2006.09.07 07:48:38 x
60109110 sperrlistenm 27 0 0 2006.09.14 07:14:02 x
60109110 tariff_data 89 0 4 2006.09.14 07:14:24 x
60109112 printlayouts 1 0 6 2006.09.07 19:17:18 x
60109112 tariff_data 89 0 4 2006.09.07 19:17:42 x
60109115 sperrlistenm 26 0 0 2006.09.12 15:37:15 x
60109115 tariff_data 101 0 0 2006.09.12 16:47:53
60109115 tariff_data 101 0 1 2006.09.13 09:20:15
60109115 tariff_data 101 0 2 2006.09.13 09:53:32
60109115 tariff_data 101 0 3 2006.09.13 10:45:45
60109115 tariff_data 101 0 4 2006.09.13 15:54:22
60109115 tariff_data 101 0 6 2006.09.13 18:03:32
60109115 tariff_data 101 0 7 2006.09.13 18:22:46
60109115 tariff_data 101 0 8 2006.09.14 09:01:10 x
60119575 tariff_data 99 10 8 2006.09.11 08:17:46
60119575 sperrlistenm 26 0 0 2006.09.11 19:17:43
60119575 tariff_data 101 0 0 2006.09.12 19:18:47 x
60119575 sperrlistenm 27 0 0 2006.09.13 19:17:47 x


Erklärung die Zeilen mit einem "x" dahinter müssen angezeigt werden, die anderen nicht. Was ich suche ist eine Routine, oder einen SQL-Befehl, der dies ermöglicht.
Mit Zitat antworten
  #2 (permalink)  
Alt 26-09-2006, 15:46
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

...die was ermöglicht? formuliere dein problem etwas besser.
Mit Zitat antworten
  #3 (permalink)  
Alt 26-09-2006, 15:48
Cyberphantom
 Newbie
Links : Onlinestatus : Cyberphantom ist offline
Registriert seit: Sep 2006
Beiträge: 19
Cyberphantom ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die es mir ermöglicht, die markierten Zeilen auszugeben.
Mit Zitat antworten
  #4 (permalink)  
Alt 26-09-2006, 15:49
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kann da aber kein Muster erkennen. Formuliere bitte, wonach genau ausgewählt werden soll.
Mit Zitat antworten
  #5 (permalink)  
Alt 26-09-2006, 15:50
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
SELECT ... FROM ... WHERE `letzte_spalte` = 'x'
Mit Zitat antworten
  #6 (permalink)  
Alt 26-09-2006, 15:52
Cyberphantom
 Newbie
Links : Onlinestatus : Cyberphantom ist offline
Registriert seit: Sep 2006
Beiträge: 19
Cyberphantom ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das Muster wonach gesucht werden soll ist:

Zu jedem Gerät (Seriennummer) soll das neueste Paket (tariff_data, printlayouts) angezeigt werden. Wenn auf dem Gerät verschiedene Pakete installiert sind, so soll von jedem Paket das neueste angezeigt werden. Also tariff_data und printlayouts



x ist nur eine Markierung, existiert nicht in der DB
Mit Zitat antworten
  #7 (permalink)  
Alt 26-09-2006, 16:41
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wie ist denn überhaupt Dein bisheriger Ansatz? Hast schon diesen Thread gelesen?
Mit Zitat antworten
  #8 (permalink)  
Alt 27-09-2006, 11:53
sternm
 Banned
Links : Onlinestatus : sternm ist offline
Registriert seit: Sep 2006
Beiträge: 103
sternm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sorry, deine x stimmen nicht. bei printlayouts gibt es zwei x, bei sperrlistenm drei x, bei tariffdata sogar vier x.

ich nehme mal an printlayout sperrlistenm und tariffdata seien 'Geräte'. Soviel zur Fragenstellung.
Mit Zitat antworten
  #9 (permalink)  
Alt 27-09-2006, 11:55
sternm
 Banned
Links : Onlinestatus : sternm ist offline
Registriert seit: Sep 2006
Beiträge: 103
sternm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wahrscheinlich reicht ein
Code:
SELECT UNIQE *, 'x' FROM einer_tabelle GROUP BYE install 
ORDER BYE install, datum AND uhrzeit
völlig aus.

Inklusive 'x' und einen neuen thread für ... is not a resource....
Mit Zitat antworten
  #10 (permalink)  
Alt 27-09-2006, 12:44
Cyberphantom
 Newbie
Links : Onlinestatus : Cyberphantom ist offline
Registriert seit: Sep 2006
Beiträge: 19
Cyberphantom ist zur Zeit noch ein unbeschriebenes Blatt
Standard

meine 'x' stimmen, denn es dürfen mehrere mit dem gleichen install sein, da es ja verschiedene geräte (seriennummern) sind.


das ist ja auch mein problem, nur den neuesten instalL (tariff, printlayout) von jedem gerät anzeigen.


und die 'x' sind nur dahinter gemalt, um zu zeigen, welchen sachen seien sollen, die 'x' existieren NICHT in der DB.
Mit Zitat antworten
  #11 (permalink)  
Alt 27-09-2006, 13:16
Patrick_PQ
 Registrierter Benutzer
Links : Onlinestatus : Patrick_PQ ist offline
Registriert seit: Aug 2003
Beiträge: 480
Patrick_PQ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Cyberphantom,

zwei Stichworte für dich:
- group by
- max
Mit Zitat antworten
  #12 (permalink)  
Alt 27-09-2006, 15:34
Cyberphantom
 Newbie
Links : Onlinestatus : Cyberphantom ist offline
Registriert seit: Sep 2006
Beiträge: 19
Cyberphantom ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Würde das ja gerne mit max und group by machen, aber wie? Mein Ansatz war:

Code:
SELECT `seriennummer`,`install`,`major`,`minor`,`build`,max(`datum`) FROM `optima_installed` GROUP BY `seriennummer`, `install`,`datum`;
Da bekomme ich aber nicht das raus, was raus soll.
Mit Zitat antworten
  #13 (permalink)  
Alt 27-09-2006, 15:44
Laques2000
 Newbie
Links : Onlinestatus : Laques2000 ist offline
Registriert seit: Sep 2006
Beiträge: 4
Laques2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Cyberphantom,

ich habe kurz drüber nachgedacht. Ich befürchte fast, das von dir Geforderte ist mit SQL nicht so einfach umsetzbar.

mit T-SQL, einer SP oder ein bisschen PHP-Code kriegst du's aber hin. Ein kleiner Ansatz:

1. Hole dir alle Werte der Spalte "Install" mit distinct aus der Tabelle
2. Bau dir eine Schleife für alle Datensätze aus 1
3. Lese dir mit select...top(1) und einer Sortierung auf Datum und Uhrzeit die Werte aus Install (wichtig: Einschränkung durch den jeweiligen Wert aus 1)

Grüße
Peter
Mit Zitat antworten
  #14 (permalink)  
Alt 27-09-2006, 18:48
sternm
 Banned
Links : Onlinestatus : sternm ist offline
Registriert seit: Sep 2006
Beiträge: 103
sternm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich glaube solche Probleme löst man mit subquery. Es hat Beispiele im mysql
Manual, wo der Verkäufer jeder Region gesucht wird, welcher den maximalen Umsatz macht. Die
hier vorliegende Frage ist genau dasselbe.

Geändert von sternm (27-09-2006 um 18:51 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 27-09-2006, 19:05
Laques2000
 Newbie
Links : Onlinestatus : Laques2000 ist offline
Registriert seit: Sep 2006
Beiträge: 4
Laques2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe jetzt nicht im MySQL-Manual nachgelesen, aber ich bin mir ziemlich sicher, dass sich das Beispiel dort von dieser Problemstellung darin unterscheidet, dass die Tabellen normalisiert sind.
Wäre das hier der Fall, wäre die Abfrage leichter und das Design wäre besser. Aber darum geht es hier wohl grad nicht.. ;-)
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 13:19 Uhr.