SQL Datenbank nur bestimmte Datensätze ausgeben
Hi,
habe ein Problem mit einer SQL Abfrage und weiss nicht wie ich es lösen soll...
In einer Tabelle habe ich 2 Spalten, einmal Sendungsnummer und einmal Paketnummer.
Jetzt habe ich das Problem, dass mehrere Paketnummern nur eine Sendungsnummer haben und ich nicht weiss, wie ich es am geschicktesten ausgeben soll.
Ich möchte gerne eine Tabelle mit der ersten Sendungsnummer und darunter die folgenden Paketnummern haben.
Dann eine weitere Tabelle mit der nächsten Sendungsnummer und wieder entsprechend die Paketnummern.
Bekomme es immer nur hin, dass ich entweder alles ausgeben kann. Oder nur alle Sendungsnummern zu einer Paketnummer, aber ohne die entsprechende Paketnummer aufzulisten....
Hoffe ihr versteht was ich meine....
Ich realisiere es mit PHP und MSSQL
habe ein Problem mit einer SQL Abfrage und weiss nicht wie ich es lösen soll...
In einer Tabelle habe ich 2 Spalten, einmal Sendungsnummer und einmal Paketnummer.
Jetzt habe ich das Problem, dass mehrere Paketnummern nur eine Sendungsnummer haben und ich nicht weiss, wie ich es am geschicktesten ausgeben soll.
Ich möchte gerne eine Tabelle mit der ersten Sendungsnummer und darunter die folgenden Paketnummern haben.
Dann eine weitere Tabelle mit der nächsten Sendungsnummer und wieder entsprechend die Paketnummern.
Bekomme es immer nur hin, dass ich entweder alles ausgeben kann. Oder nur alle Sendungsnummern zu einer Paketnummer, aber ohne die entsprechende Paketnummer aufzulisten....
Hoffe ihr versteht was ich meine....
Ich realisiere es mit PHP und MSSQL
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 166172
Url: https://administrator.de/contentid/166172
Ausgedruckt am: 23.11.2024 um 18:11 Uhr
8 Kommentare
Neuester Kommentar
Hi Zorni,
das musst du in zwei Teile "spalten" !
Beim auslesen muss du die Datensätze nur entsprechend sortieren lassen:
Das sollte die Datensätze etwa so ausgeben:
Und diese Datensätze lässt du nun in einer einfachen Schleife ausgeben !
Der "Trick" dabei ist sich die "send_nr" zu merken. Wenn sich diese ändert bedeutete das, dass eine neue Tabelle beginnen soll, bleibt sie gleich bleibe wir in der Tabelle und erzeigen einfach weitere Zeilen zür jedes zusätzliche Paket.
Alles klar soweit ?
Viel Erfolg
~Arano
das musst du in zwei Teile "spalten" !
- Daten auslesen
- Daten ausgeben
Beim auslesen muss du die Datensätze nur entsprechend sortieren lassen:
SELECT `send_nr`, `paket_nr`
FROM `tabelle`
ORDER BY `send_nr` ASC
send_nr | paket_nr |
---|---|
100101 | 900901 |
100101 | 900902 |
100101 | 900903 |
100105 | 900911 |
100112 | 900957 |
100112 | 900958 |
Und diese Datensätze lässt du nun in einer einfachen Schleife ausgeben !
Der "Trick" dabei ist sich die "send_nr" zu merken. Wenn sich diese ändert bedeutete das, dass eine neue Tabelle beginnen soll, bleibt sie gleich bleibe wir in der Tabelle und erzeigen einfach weitere Zeilen zür jedes zusätzliche Paket.
Alles klar soweit ?
Viel Erfolg
~Arano
Hi
"if" ist keine Schleife, das ist eine Anweisung die bedingt ausgeführt wird. (eben WENN die Bedingung der Wahrheit entspricht)
Ich meinte eine Schleife wie "while", "for" oder "foreach" die wiederholt werden, SOLANGE deren Bedingungen der Wahrheit entsprechen.
Warum fragst du eigentlich, probiere es doch gleich aus - hau in die Tasten
Das mit dem Status sollte kein Problem darstellen, sofern du nichts kompiziertes mit ihm vorhast !?
Aber ist ja auch egal, fang erstmal an
Das waren ALLE einmal
"sorrz, für die dummen fragen, ..."
Der Die Das, Wer Wie Was, Wieso Weshalb Warum, wer nicht fragt bleibt dumm !
Und ganz nebenbei, keine der Fargen ist dumm !
~Arano
Das heisst, ich benötige nur diese ein sql abfrage und mach den rest mit php if schleifen?
Jein... Ja !"if" ist keine Schleife, das ist eine Anweisung die bedingt ausgeführt wird. (eben WENN die Bedingung der Wahrheit entspricht)
Ich meinte eine Schleife wie "while", "for" oder "foreach" die wiederholt werden, SOLANGE deren Bedingungen der Wahrheit entsprechen.
Warum fragst du eigentlich, probiere es doch gleich aus - hau in die Tasten
Das mit dem Status sollte kein Problem darstellen, sofern du nichts kompiziertes mit ihm vorhast !?
Aber ist ja auch egal, fang erstmal an
sorrz, für die dummen fragen, bin noch recht unerfahren
"...bin noch recht unerfahren"Das waren ALLE einmal
"sorrz, für die dummen fragen, ..."
Der Die Das, Wer Wie Was, Wieso Weshalb Warum, wer nicht fragt bleibt dumm !
Und ganz nebenbei, keine der Fargen ist dumm !
~Arano
Das ist doch alles Grütz !
Also noch einmal:
Daten beim auslesen sortieren (Senungsnummer ASC, Paketnummer ASC).
Beim abarbeiten der Ergebinstabelle die aktuelle Sendungsnummer merken und vergleichen.
Verstanden ?
Im prinzip ist es das gleiche was in unserem Kopf automatisch abläuft wenn wir solch eine Tabelle sehen.
Ohne das dort irgendwo steht, das die Pakete zwischen zwei Sendungsnummern zu der obern Sendungsnummer gehören, erkennen wir sowas automatisch (mehr oder weniger) weil wir uns erinnern.
Ich hatte sogar gefragt ob alles klar ist...
Es ist nur dumm, nicht zu fragen !
So, alles klar soweit ?
~Arano
- Wenn du einen neuen Beitrag erstellst, dann klick mal auf den __roten__ Link: Formatierungshilfe über dem Eingabefeld
- Du erstellst ja lauter einzelne Tabellen, das mach doch überhaubt keinen Sinn !
- In deinem Startposting spricht du von "Sendungsnummer" und "Paketnummer" aber in deinem jetzigem Code scheint es die gar nicht mehr zu geben, stat dessen gibt es die "AbWasserBerlin" und die "MüllRetoureNord" !? Ja was weiss ich den schon über Recycling !?
- Wieso fragst du eigentlich wie mann etwas machen kann, wenn du es dann doch ignorierst ? (Darauf hät ich gerne eine Antwort)
Also noch einmal:
Daten beim auslesen sortieren (Senungsnummer ASC, Paketnummer ASC).
Beim abarbeiten der Ergebinstabelle die aktuelle Sendungsnummer merken und vergleichen.
Verstanden ?
<?php
// lese Daten aus DB
$strSelectAllePakete = "SELECT Sendungsnummer,Paketnummer FROM tabelle ORDER BY Sendungsnummer ASC";
$resAllePakete = mysql_query();
// erinerungs Variable
$strAktuelleSendNr = NULL;
// beginne Tabelle
echo '<table>';
// verarbeite DB-Daten
while($arrPaket = mysql_fetch_array($resAllePakete))
{
// erinnern wir uns an diese Sendungnummer ?
if($strAktuelleSendNr != $arrPaket['Sendungsnummer']) // DESSWEGEN ist es wichtig die Daten nach der Sendungsnummer zu sortieren
{
// wenn nicht, dann merken wir uns sie jetzt und
$strAktuelleSendNr = $arrPaket['Sendungsnumer'];
// gebenen einen Tabellenheader mit Sendungsnummer und die Paketnummer aus
echo '<tr><th>'.$arrPaket['Sendungsnummer'].'</th></tr>';
echo '<tr><td>'.$arrPaket['Paketnummer'].'</td></tr>';
}
else
{
// ja wir erinnern uns, also wurde die Sendungsnummer schon ausgegeben und
// wir brauchen nur noch eine weitere Paketnummer ausgeben
echo '<tr><td>'.$arrPaket['Paketnummer'].'</td></tr>'
}
}// end while
// beende Tabelle
echo '</table>';
?>
100101 |
---|
900905 |
900906 |
900909 |
100154 |
900483 |
900484 |
100155 |
900532 |
900533 |
900534 |
Ich hatte sogar gefragt ob alles klar ist...
Es ist nur dumm, nicht zu fragen !
So, alles klar soweit ?
~Arano