Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

SQL Datenbank nur bestimmte Datensätze ausgeben

Frage Entwicklung Datenbanken

Mitglied: zorni

zorni (Level 1) - Jetzt verbinden

12.05.2011 um 17:24 Uhr, 6342 Aufrufe, 8 Kommentare

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
Mitglied: Arano
12.05.2011 um 17:48 Uhr
Hi Zorni,

das musst du in zwei Teile "spalten" !

  1. Daten auslesen
  2. Daten ausgeben

Beim auslesen muss du die Datensätze nur entsprechend sortieren lassen:
01.
  SELECT `send_nr`, `paket_nr` 
02.
    FROM `tabelle` 
03.
ORDER BY `send_nr` ASC
Das sollte die Datensätze etwa so ausgeben:
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
Bitte warten ..
Mitglied: zorni
12.05.2011 um 18:00 Uhr
Das heisst, ich benötige nur diese ein sql abfrage und mach den rest mit php if schleifen? will eben später noch einen status pro sendungsnummer und artikelnummer setzen und auslesen. aber soweit bin ich noch nicht ;) sorrz, für die dummen fragen, bin noch recht unerfahren
Bitte warten ..
Mitglied: Arano
12.05.2011 um 18:55 Uhr
Hi

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
Bitte warten ..
Mitglied: zorni
13.05.2011 um 10:22 Uhr
Also ich habe nun folgendes gemacht:

$awb = ("SELECT DISTINCT AWB, MRN FROM anl_po00 WHERE AnlieferungsNr = '$Anlieferungs_Nummer' ORDER BY AWB ASC");

echo '<table border="1">';
while ($row = mssql_fetch_array($awberg))
{
echo '<tr><td>'.$row['AWB']."</td> \n";
echo '<tr><td>'.$row['MRN']."</td> \n";
echo '<td>'.$row['MRN']."</td> \n";
echo '<td>'.$row['Status']."</td></tr>\n";
}
echo '</table>';

Nun bekomm ich es in etwa so ausgegeben:

02020071974 <- Lieferungssnummer
11DE586600274612E4 <- Artikelnummer
02020071974 <- Lierfungssnummer
11DE586600274613E3 <- Artikelnummer
02020071974
11DE586600274614E2
02020071974
11DE586600274616E0
02020071975
11DE586600274611E5
02020071975
11DE586600274617E0
02020071975
11DE586600274618E9
02020071975
11DE586600274619E8
02020071975
11DE586600274620E0

Ich weiss nicht, wie ich es hinbekomme, dass er mit die Liefergungsnummer jetzt nur einmal ausgibt und die dazugehörigen Artikelnummern darunter ausgibt.
AWB steht für Lieferungsnummer und MRN für Artikelnummer.
Oben in der select abfrage, das AnlieferungsNr = '$Anlieferungs_Nummer', ist vorher meine Prüfung ob es die richtie Sendungssnummer ist.
Weil Eine Sendungssnummer kann mehrere Lieferungsnummern enthalten, dass hab ich soweit auch hinbekommen.
Bitte warten ..
Mitglied: zorni
13.05.2011 um 10:34 Uhr
glaub ich habs schon ^^ und zwar hab ich das nun so gelöst erstmal:

$daten = array();
while($row = mssql_fetch_object($awberg) ) {
$daten[$row->AWB][] = Array(
'MRN' => $row->MRN,
);
}

foreach ( $daten as $key => $value ) {
echo '<div class="AWB">'.$key.'</div>';
foreach ( $value as $member ) {
echo '<table>';
echo '<tr><td>MRN:</td><td>'.$member['MRN'].'</td></tr>';

echo '</table>';
Bitte warten ..
Mitglied: zorni
13.05.2011 um 11:33 Uhr
hab doch noch ein problem...

und zwar wollte ich jetzt die statusbeschreibung mit ausgeben und habe mein SELECT angepasst.


$awb = ("SELECT DISTINCT anl_po00.AWB as AWB, anl_po00.MRN as MRN, anl_po00.Status, status00.Beschreibung FROM anl_po00, status00 WHERE anl_po00.AnlieferungsNr = '$Anlieferungs_Nummer' ORDER BY anl_po00.AWB ASC");

Wenn ich nun aber meine ausgabe laufen lasse mit:

$daten = array();
while($row = mssql_fetch_object($awberg) ) {
$daten[$row->AWB][] = Array(
'MRN' => $row->MRN,
);
}

foreach ( $daten as $key => $value ) {
echo '<table width="400" border="1">';
echo '<tr><td>AWB:</td><td><div class="AWB">'.$key.'</div>';
echo '</table>';
foreach ( $value as $member ) {
echo '<table width="400" border="1">';
echo '<tr><td>MRN:</td><td>'.$member['MRN'].'</td></tr>';
echo '</table>';
}
}


Dann bekomm ich jede Artikelnummer 5 mal ausgegeben und ich finde den fehler nicht....
Bitte warten ..
Mitglied: Arano
13.05.2011 um 16:19 Uhr
Das ist doch alles Grütz !

  1. Wenn du einen neuen Beitrag erstellst, dann klick mal auf den __roten__ Link: Formatierungshilfe über dem Eingabefeld
  2. Du erstellst ja lauter einzelne Tabellen, das mach doch überhaubt keinen Sinn !
  3. 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 !?
  4. 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 ?

01.
<?php 
02.
  // lese Daten aus DB 
03.
  $strSelectAllePakete = "SELECT Sendungsnummer,Paketnummer FROM tabelle ORDER BY Sendungsnummer ASC"
04.
  $resAllePakete = mysql_query(); 
05.
  // erinerungs Variable 
06.
  $strAktuelleSendNr = NULL; 
07.
 
08.
  // beginne Tabelle 
09.
  echo '<table>'
10.
  // verarbeite DB-Daten 
11.
  while($arrPaket = mysql_fetch_array($resAllePakete)) 
12.
13.
    // erinnern wir uns an diese Sendungnummer ? 
14.
    if($strAktuelleSendNr != $arrPaket['Sendungsnummer']) // DESSWEGEN ist es wichtig die Daten nach der Sendungsnummer zu sortieren 
15.
16.
      // wenn nicht, dann merken wir uns sie jetzt und 
17.
      $strAktuelleSendNr = $arrPaket['Sendungsnumer']; 
18.
      // gebenen einen Tabellenheader mit Sendungsnummer und die Paketnummer aus 
19.
      echo '<tr><th>'.$arrPaket['Sendungsnummer'].'</th></tr>'
20.
      echo '<tr><td>'.$arrPaket['Paketnummer'].'</td></tr>'
21.
22.
    else 
23.
24.
      // ja wir erinnern uns, also wurde die Sendungsnummer schon ausgegeben und 
25.
      // wir brauchen nur noch eine weitere Paketnummer ausgeben 
26.
      echo '<tr><td>'.$arrPaket['Paketnummer'].'</td></tr>' 
27.
28.
  }// end while 
29.
 
30.
  // beende Tabelle 
31.
  echo '</table>'
32.
?>
Im prinzip ist es das gleiche was in unserem Kopf automatisch abläuft wenn wir solch eine Tabelle sehen.
100101
900905
900906
900909
100154
900483
900484
100155
900532
900533
900534
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
Bitte warten ..
Mitglied: zorni
16.05.2011 um 11:10 Uhr
Hi,

sorry hatte es mittlerweile selbst gelöst und meine fehler gefunden gehabt.

Habe es nun wie folgt gemacht:

01.
  
02.
<?  
03.
 
04.
		$daten = array(); 
05.
 
06.
	while($row = mssql_fetch_object($awberg) ) { 
07.
   		$daten[$row->AWB][] = Array
08.
   		'MRN' => $row->MRN, 
09.
        'Status' => $row->Status, 
10.
 		  ); 
11.
 
12.
13.
 
14.
		foreach ( $daten as $key => $value ) { 
15.
			 
16.
		$mrnstatrech = mssql_query("SELECT Status FROM anl_po00 WHERE AnlieferungsNr = '$Anlieferungs_Nummer'"); 
17.
		$mrnstat = mssql_fetch_row($mrnstatrech); 
18.
		 
19.
		 
20.
		echo '<p>&nbsp;</p>'
21.
		echo '<table width="800" border="0" align="center">'
22.
		echo '<tr><td>AWB:</td><td><div class="AWB">'.$key.'</div>'
23.
		echo '</table>'
24.
		echo '<p>&nbsp;</p>'
25.
 		foreach ( $value as $member ) { 
26.
        echo '<table width="800" border="1" align="center">'
27.
        echo '<td>MRN:</td><td>'.$member['MRN'].'</td>'
28.
		if ($mrnstat[0] == 20) { 
29.
		echo "<td>Status:</td><td><img src=\"image/orange.png\"></td>"; } 
30.
		else
31.
		echo "fehler";} 
32.
?>  
33.
 
oder ist daran was nun falsch? sieht auf jedenfall ganz gut so aus...
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
Eine bestimmte SQL-Datenbank wird nicht jeden Tag gesichert? (12)

Frage von AlbertMinrich zum Thema Windows Server ...

Festplatten, SSD, Raid
Vergleich zweier SSD-Typen im Raid-10 für den Anwendungsfall SQL-Datenbank (8)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...

Windows Server
gelöst SQL Datenbank Umzug (4)

Frage von hornissenmann zum Thema Windows Server ...

Windows Server
Microsoft SQL-Datenbank Syncronisieren

Frage von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...