Zwei Tabellen (ergebniss im wechsel ausgeben)

BlueZone

Grünschnabel
Hallo @ll...

Habe ein kleines Problem.
Habe zwei Tabellen, Tabelle1 = md_ticket_user, Tabelle2 = md_ticket_coworker
So in dieses zwei Tabellen sind einträge vorhanden bei dem die Spalte md_ticket_coworker.tick_time_id = der selbe wert ist wie in md_ticket_user.tick_time_id ist also dort ist ein Timestamp entahalten. Nun möchte ich diese zeilen aus md_ticket_user & md_ticket_coworker im wechsel sortiert nach dem Feld md_ticket_user.input_date & md_ticket_coworker.input_date ausgeben. Also als erstes müsste dann der erste eintrag aus md_ticket_coworker genommen werden. weil da der eintrag mit dem ältensten Datum vorhanden ist und dessen ticket_time_id = $ticketTimeID ist. Dann müsste das nächste was er sich holen soll aus md_ticket_user weil das das nächst jüngere Datum drinnen ist. & was mit dem ticket_time_id = $ticketTimeID übereinstimmt.

Kleines Beispiel (Was unsortiert ist als nimmt momentan alles erst aus der einen Tabelle dann aus der anderen. das soll aber im wechsel geschehen sortiert nach den feldern input_date)

PHP:
$dbHandle=new database("mysql",$GLOBALS['dbHost'],$GLOBALS['dbname'],$GLOBALS['dbUser'],$GLOBALS['dbpasswd']);

$dbHandle->query(" SELECT * FROM md_ticket_user WHERE ticket_time_id='$ticketTimeID' ORDER BY input_date ");
$dbResult=$dbHandle->get_row();

while($dbResult=$dbHandle->get_row()){
    echo getTableTicketEdit("Kunde: ", $dbResult['user_nick'], $dbResult['input_date'], $dbResult['ticket_message']);
}// End While 1
  
$dbHandle->query(" SELECT * FROM md_ticket_coworker WHERE ticket_time_id='$ticketTimeID' ORDER BY input_date ");

while($dbResult=$dbHandle->get_row()){
    echo getTableTicketEdit("Coworker: ", $dbResult['coworker_nick'], $dbResult['input_date'], $dbResult['ticket_message']);
} // End While 2

$dbHandle->disconnect();

Hoffe das hat einer verstanden...

Danke für euere Hilfe !
 
Du musst die DB mit einer Abfrage starten und darin ein JOIN einarbeiten. Danach kannst du das ganze per while darstellen. in der while noch einen wechsel per if einbauen und dann passt das.

Aktuell läuft in deinem Script nichts weiter ab als a) erste Abfrage und Ausgabe per while und b) zweite Abfrage und Ausgabe per while.

SELECT * FROM md_ticket_user WHERE ticket_time_id='$ticketTimeID' ORDER BY input_date

SELECT * FROM md_ticket_coworker WHERE ticket_time_id='$ticketTimeID' ORDER BY input_date

Dein SELECT muss aber so aussehen:

PHP:
<?php
$was = mysql_query("SELECT * 
	   				FROM 
						md_ticket_user AS mtu, 
						md_ticket_coworker AS mtc 
					WHERE 
						ticket_time_id='$ticketTimeID' AND 
						ticket_time_id='$ticketTimeID' 
					ORDER BY
						inpute_date");
?>

Die while-Ausgabe überlasse ich nun wieder dir ;)
 
Hallo...

Erst mal danke für deine Hilfe.

Habe da noch eine frage da ich jeweils über den zwei zeilen verschiedene Überschriften habe muss ich ja in der While Schleife irgendwie abfragen sind das nun daten aus md_ticket_user oder md_ticket_coworker.

Wenn zum beispiel daten aus der md_ticket_user wieder geben werden seht über der Tabelle dann Kunde: (MYSQL USERNAME)

und bei md_coworker dann
Coworker: (MYSQL COWORKER NAME)

Danke
 
Du bekommst bei der Abfrage aus beiden Tabellen alle Werte. Du kannst die Werte auch noch einfacher Abfragen, wenn du eine WHERE - Bedingung anhängst, daß z.B. der timestamp übereinstimmt.

Aber noch was anderes, es wäre grundsätzlich besser, du würdest die Tabellen oder deine Beschreibung so formulieren, das man auch verstehen kann was du damit meinst. Wenn man nur von Tabellen spricht, weis man ja nicht was da drin ist und somit spricht man über eine temporäre oder physikalische oder auch imaginäre.

Frag dich doch mal, ob die im Wechsel darzustellenden Daten sein müssen. Können diese nicht auch nebeneinander in zwei Spalten?

Wie du den Wechsel hinbekommst ist dir klar oder?
 
Hallo...

Kann das leider nicht anders ausgeben ist für meine Arbeit die wollen das so.
Das Coworker Antworten in md_ticket_coworker stehen und User Antworten in md_ticket_user. Ist finde ich auch besser so so ist der überblick besser als alles in eine tabelle.

Nein ich weiss nicht wie ich das im wechsel aus gebe sonst würde ich hier nichts schreiben.
Normal von vorne !

User Öffnet ein Ticket (Support Ticket) diese ERSTE anfrage wird in der Tabelle md_tciket_user gespeichert.
Daten: Username, User eMail, User Mitteilung, Timestamp, Timestamp
Spalten: nickname, email, usermessage, inputdate, ticket_time_id

So nun habe ich einen eintrag in md_ticket_user der eine eindeutige ID hat nämlich ticket_time_id (tinestamp) dieser Timestamp ist für alle antworten die folgen der selbe da er als ID gilt.
So Coworker will Antworten. Selbes verfahren nur speichert er seine daten in md_ticket_coworker. das feld ticket_time_id ist dann der selbe wert wie von Messages 1 ticket_time_id also kann man an den zwei spalten feststellen das die zwei Messages zusammen gehören. So damit man Sie auch Sortieren kann Speichert der Coworker (Message1 von Ihm) in inputdate seinen aktuellen timestamp.

So nun will ich doch nur abwechseln die richtige message ausgeben so wie sie auch in die datenbank geschreiben wurden. Also erst User Message 1 dann Coworker Message 1 so und nicht anders. Sortiert über inputdate da dort immer der aktuelle timestamp steht als der user oder coworker seine message abgeschickt hat.

Und ich denke gegen dieses verfahren ist nichts einzuwenden.

MFG
 
Zuletzt bearbeitet:
Naja, jetzt liest sich das ganze auch etwas anderst und ist wesentlich verständlicher ;)

Aber nachdem du nun das ganze so aufgeschlüsselt hast, ist es dir möglicherweise auch schon möglich die DB-Anfrage so zu formulieren, das du nur eine while hast in welcher automatisch (also ohne zusätzlichen if-Vorgaben) die Ausgabe erfolgt.

Seh dir die DB-Anfrage genauer an und versuch diese mal zu ergänzen. Denn so wie sie oben im Beispiel ist, wird sie einen Fehler ausgeben. ;
 
Zurück