SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 21.03.2010, 16:36:16
shade_mk shade_mk ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 49
Beiträge: 3
Hilfe, bitte!

Hallo. Ich habe ein kleines Problem, dass mich daran hindert, mit der Programmierung des Tools zu beginnen. Hierbei handelt es sich um eine Lager Bestands-Software und Artikelverfolgung.

Ich habe folgende Tabelle:

mysql> describe lager_tracker;
+------------+---------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------------+------+-----+---------+-------+
| id | mediumint(8) unsigned | NO | MUL | NULL | |
| datum | datetime | NO | | NULL | |
| aktion | enum('eingang','ausgang') | NO | | NULL | |
| grund | varchar(10) | NO | | NULL | |
| benutzerid | mediumint(8) | NO | MUL | NULL | |
+------------+---------------------------+------+-----+---------+-------+


mysql> select * from lager_tracker;

| id | datum | aktion | grund | benutzerid |
+----+---------------------+---------+---------+------------+
| 25 | 2010-03-16 22:53:28 | eingang | 25 | 1 |
| 24 | 2010-03-16 22:52:58 | eingang | 24 | 1 |
| 27 | 2010-03-16 22:54:35 | eingang | 27 | 1 |
| 28 | 2010-03-16 22:54:52 | eingang | 28 | 1 |
| 29 | 2010-03-16 22:55:05 | eingang | 29 | 1 |
| 30 | 2010-03-16 22:55:13 | eingang | 30 | 1 |
| 31 | 2010-03-16 22:55:22 | eingang | 31 | 1 |
| 32 | 2010-03-16 22:55:27 | eingang | 32 | 1 |
| 33 | 2010-03-16 22:55:35 | eingang | 33 | 1 |
| 24 | 2010-03-16 22:58:41 | ausgang | 1A-1000 | 3 |
| 25 | 2010-03-16 22:58:46 | ausgang | 1A-1000 | 3 |
| 27 | 2010-03-16 22:58:49 | ausgang | 1A-1000 | 3 |
| 28 | 2010-03-16 22:58:56 | ausgang | 1A-1000 | 3 |
| 29 | 2010-03-16 22:58:59 | ausgang | 1A-1000 | 3 |
| 30 | 2010-03-16 22:59:05 | ausgang | 1A-1000 | 3 |
| 31 | 2010-03-16 22:59:09 | ausgang | 1A-1000 | 3 |
| 32 | 2010-03-16 22:59:12 | ausgang | 1A-1000 | 3 |
| 33 | 2010-03-16 22:59:15 | ausgang | 1A-1000 | 3 |
| 25 | 2010-03-21 09:33:27 | eingang | 1A-1000 | 1 |
| 25 | 2010-03-21 09:34:19 | ausgang | 1A-2000 | 2 |
| 24 | 2010-03-21 10:11:38 | eingang | 1A-1000 | 1 |

In der Tabelle lager_tracker werden alle Artikelläuft aufgeschrieben, wie zB der Lagerausgang gekennzeichnet durch aktion ="ausgang" bzw. Lagereingang durch aktion ="eingang".

Die Tabelle hat keine Primärschlüssel, da die Artikel die Besitzer ( grund ) ständig wechseln können. So entsteht ein Wegverlauf der Ware. Ist die id = grund, so kommt der Artikel direkt von der Bestellung selbst. Der Rest sind Kunden.

Mein Hauptproblem nun: Wie bekommen ich aus diesen Datensätzen pro ID den jeweils letzten Datensatz raus, da die ID öfter vorkommen kann ( Artikel mit der ID kann zB öfter den Besitzer wechseln).

Das Problem ist, dass ich hiermit eine Select-Anweisung brauche, die mir sagt, welcher Artikel zuletzt wo gelandet ist, sprich "eingang" ( artikel im lager ) bzw. "ausgang" (artikel beim Kunden). Ich habe schon alles mögliche versucht, jedoch nur mit einem Teilerfolg.

Nach dieser Aufstellung sollte das Ergebnis so aussehen:

| 24 | 2010-03-21 10:11:38 | eingang | 1A-1000 | 1 |

Das ist der einzige Artikel, welcher sich noch im Lager befindet. Alle anderen wurden entweder schon verwendet und sind aus dem Lager raus, oder werden später durch grund="defekt" und aktion="ausgang" aus dem Lager entnommen.

Bitte helft mir mit der Abfrage. Ich weiss im Moment leider nicht mehr weiter. Um ganz ehrlich zu sein, wir verzweifeln hier alle :/
Mit Zitat antworten
  #2  
Alt 21.03.2010, 18:02:38
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: Hilfe, bitte!

Soweit ich dich richtig verstanden habe ist doch die letzte Aktion immer das grösste Datum oder sehe ich das falsch?

Aus dem MySql Referenzhandbuch
Zitat:
3.6.2. Die Zeile, die den höchsten Wert einer bestimmten Spalte enthält

Aufgabe: Ermitteln Sie Nummer, Händler und Preis des teuersten Artikels.

Dies lässt sich recht einfach mit einer Unterabfrage bewerkstelligen:

SELECT artikel, haendler, preis
FROM shop
WHERE preis=(SELECT MAX(preis) FROM shop);

Eine andere Lösung besteht darin, alle Datensätze nach Preis aufsteigend zu sortieren und nur den ersten Datensatz mithilfe der MySQL-spezifischen LIMIT-Klausel abzurufen:

SELECT artikel, haendler, preis
FROM shop
ORDER BY preis DESC
LIMIT 1;

Hinweis: Wenn mehrere teuerste Artikel zum gleichen Preis vorhanden sind, dann zeigt die LIMIT-Lösung nur einen davon an.
Bin mir jetzt nicht sicher ob MAX beim Datum funktioniert aber zumindest due letzte Query sollte funktionieren, wenn du sie entsprechend deiner Tabelle und Bedingungen anpasst.
Mit Zitat antworten
  #3  
Alt 21.03.2010, 18:25:45
shade_mk shade_mk ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 49
Beiträge: 3
AW: Hilfe, bitte!

Hallo urvater. danke für die rasche antwort.

Das Problem welches ich habe ist jedoch, dass die Tabelle lager_tracker die Spalte ID aufweist, welche mehrere ID's zur verfügung stellt.

Alles was ich möchte ist, dass von "jeder" ID, welche eingetragen ist, immer der letzte Datensatz angezeigt wird.

Bei einem Lagertool würde mir das in der Tabelle zeigen, wo sich der letzte Artikel gerade befindet.

Wenn ich jedoch mit MAX() arbeite, erhalte ich den letzten Datensatz der kompletten Tabelle.
Ich brauche jedoch den jeweils letzten Datensatz einer jeden ID der Tabelle. Und hier ist mein Haupptproblem.

Die Abfrage müsste sozusagen alle letzten Datensätze der Tabelle lager_tracker ausgeben, wo die ID jeweils zuletzt eingetragen wurde.

Es ist sozusagen ein Trackingsystem fürs Lager. Der letzte Datensatz sagt aus, was mit dem Artikel im Moment passiert ist, ob er zuletzt einen "Ausgang" oder "Eingang" hatte.

Ich benötige sozusagen einen DISTINCT für jeden Datensatz der Tabelle des Feldes ID, der zuletzt eingetragen wurde.

Und leider komme ich genau hier nicht weiter. Ich bin sogar gerne bereit, einen phpmyadmin-Zugang bereit zu stellen, wenn das helfen sollte.

Ich mach so gut wie alles um hier behilflich zu sein.
Mit Zitat antworten
  #4  
Alt 21.03.2010, 19:13:58
shade_mk shade_mk ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 49
Beiträge: 3
AW: Hilfe, bitte!

Hallo urvater, Hallo alle miteinander.

Wir haben die Abfrage nun erfolgreich erstellt. Ich werde Sie hier mal posten, wie es sich für ein Forum gehört, ohne gleich zu verschwinden:


select T.id, T.datum, T.aktion, T.grund, T.benutzerid from
(select T2.id, max(T2.datum) AS maxdatum from lager_tracker T2
group by T2.id) tmp, lager_tracker T
where T.id = tmp.id and T.datum = tmp.maxdatum and T.aktion='eingang';

Diese Abfrage erlaubt mir die Anzeige aller Artikel in der Datenbank, welche zuletzt im Lager gelandet sind. Wurde der Artikel noch keinem zugewiesen, tauch er auch nicht auf.

Vielen Dank für den Support urvater. Sollte es vielleicht hier optimierungsmögl. geben, so bin ich selbstverständlich ganz ohr.

Bye ALLE ;)
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Seite plötzlich leer..HILFE SendoX MySQLi/PDO/(MySQL) 19 14.02.2010 19:37:27
Hilfe, Hilfe, Hilfe adoganay Support 1 08.02.2010 08:05:08
Hilfe für MYSQL hbriele MySQLi/PDO/(MySQL) 3 26.08.2006 18:22:31
PHP-Laie bitte um Hilfe bei Script-Einbindung in HTML marode2301 PHP Grundlagen 4 30.01.2006 07:29:34
Help!!! Hilfe!!! Presster PHP Grundlagen 1 16.12.2004 20:28:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:29:00 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt