MySQL - Eintrag loeschen zwei verschiedene Tabellen dazu abfragen

son gohan

Erfahrenes Mitglied
Hallo,

ich muss folgende Aufgabe loesen:

ich habe zwei Tabellen,

in einer Tabelle stehen offene Tickets in der anderen geschlossene.

Die tickets haben ein gleiche Ticketnummer,

bevor ich die offenen Tickes mit einer while schleife abfrage und auf eine seite mit php schreibe, will ich alle Tickets die bereits als geschlossen in der anderen Tabelle stehen aus der Tabelle fuer offene Tickets loeschen.

den ich habe ja offene und geschlossene tickets und dazu auch jeweils eine tabelle und tickets die geschlossen sind sollen nicht mehr in der tabelle fuer offene stehen.

wie macht man das jetzt mit MySQL, wenn ich beispielweise ein MySQL Query sende und per while() schleife die einzelnen Ergebnisse bekome, kann ich dann gleichzeitig waehrend die Ergebnisse kommen noch schnell nachfragen ob der Datensatz bereits in der Tabelle fuer geschlossene Tickets steht und wenn ja dann schnell loeschen aus der Tabelle fuer offene tickets?
 
Lösch doch einfach alle entsprechenden mit einem einzigen Query
SQL:
DELETE FROM tabelle1
WHERE id IN (SELECT id FROM tabelle2)
 
Zuletzt bearbeitet von einem Moderator:
Lösch doch einfach alle entsprechenden mit einem einzigen Query
SQL:
DELETE FROM tabelle1
WHERE id IN (SELECT id FROM tabelle2)

Hallo, ich kann nochmal unterstuetzung gebrauchen, ich dachte das wuerde direkt funktionieren, aber meine versuche eben waren noch nicht gut.

Ich versuche im moment mit SELECT die datensaetze zu selectieren die in beiden Tabellen gleich sind, ich wundere mich jetzt aber die ganze Zeit warum ich als Anzahl 1 bei folgende Abfrage bekomme, obwohl ich extra in beiden Tabellen die ticketnummer veraendert habe, also keine zwei gleichen Ticketnummern drine sind, gibt er mir 1 als Anzahl zurueck:

PHP:
$sql="SELECT openorders.ticket,performance.ticket FROM openorders,performance WHERE openorders.ticket=performance.ticket";
$result = mysqli_query($DatabasePointer,$sql);
echo mysqli_num_rows($result);

Also in beiden Tabellen habe ich kein Eintrag mit gleicher Ticketnummer, warum gibt die Abfrage trotzdem bei num_rows Anzahl 1 zurueck, das ist total unlogisch?
 
Zuletzt bearbeitet von einem Moderator:
Keine 2 gleichen in derselben DB oder keine gleiche über beide Tabellen hinweg?

Die Beiden Tabellen sind in der gleichen Datenbank und in beiden Tabellen ist aber kein Eintrag mit gleicher Ticketnummer, deswegen wundert mich die ganze Zeit warum trotzdem als Ergebnis num_rows mir 1 anzeigt.

Wenn ich beispielweise in beiden Tabellen ein Datensatz schreibe mit gleicher Ticketnummer, dann bekomme ich als Ergebniss 2, das wundert mich auch, da haette ich dann auch 1 als Ergebniss erwartet, weil das ja nur einmal vorkommt das beide gleich sind.
 
Hast du schon mal versucht die Felder openorders.ticket und performance.ticket auszugeben und in den Tabellen nachzuschauen, was er denn da gefunden hat?
 
Jch habe jetzt gesehen das doch ein gleicher Eintrag drine war.

Aber jetzt versuche ich den gleichen Eintrag zu loeschen und es funktioniert nicht, habe ich ein Fehler in meiner DELETE Abfrage? Ich bekomme keine Fehlermeldung aber der gleiche Datensatz wird auch nicht geloescht:

PHP:
$sql="DELETE openorders.ticket FROM openorders WHERE openorders.ticket=performance.ticket";
$result = mysqli_query($DatabasePointer,$sql);

$sql="SELECT openorders.ticket,performance.ticket FROM openorders,performance WHERE openorders.ticket=performance.ticket";
$result = mysqli_query($DatabasePointer,$sql);
$row_cnt = mysqli_num_rows($result);

if($row_cnt>0)
{
while($row = mysqli_fetch_array($result))
{
 echo $row['ticket'];
}
}
 
Warum verwendest du nicht mein SQL das ich dir dazu erstellt habe? Dein DELETE_Statement ist falsch und würde ein Fehler werfen wenn du die Fehlerstufe entsprechend einstellen würdest.

Siehe auch PHP MySQL Debug Queries
 
Zurück