php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.02.2008, 17:02  
Erfahrener Benutzer
 
Registriert seit: 23.12.2004
Beiträge: 210
PHP-Kenntnisse:
Anfänger
Bonaparte
Bonaparte eine Nachricht über ICQ schicken
Standard Beim DELETE zwei Tabellen verknüpfen

Hallo Zusammen, vielleicht ist das eine sehr dumme Frage. Aber gerade habe ich einen Blackout.

Ich habe 2 MySQL Tabellen users1 und users2. Aus der users1 möchte ich einige Datensätze löschen, die in users2 bereits vorhanden sind. Doch irgendwie finde ich keine Lösung.

Das hier habe ich versucht (direkt im phpmyadmin):
Code:
DELETE FROM users1 WHERE users1.username = users2.username
Dabei bekomme ich die Meldung: #1054 - Unknown column 'users2.username' in 'where clause'

Das kann jedoch nicht sein, da die Spalte wirklich vorhanden ist.

Das müsste doch theoretisch klappen oder was mache ich falsch?

Ich wäre für euere Hilfe sehr dankbar.
__________________
MfG David
axinio Internet Marketing - professionelle Suchmaschinenoptimierung
Bonaparte ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.02.2008, 17:06  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Und warum steht eine SQL Frage hier im PHP Forum?
Verschoben.

Zitat:
DELETE FROM users1 WHERE users1.username = users2.username
users2 ist nirgendwo definiert (kein Alias, kein Join oder dergl.)
nikosch ist offline   Mit Zitat antworten
Alt 14.02.2008, 17:07  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Code:
DELETE FROM 
	users1 
WHERE 
	users1.username IN(
		SELECT
		 	users2.username
		FROM
			users2
	)
sollte gehen
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 15.02.2008, 01:29  
Erfahrener Benutzer
 
Registriert seit: 23.12.2004
Beiträge: 210
PHP-Kenntnisse:
Anfänger
Bonaparte
Bonaparte eine Nachricht über ICQ schicken
Standard

@nikosch
sorry, ich hab nur auf "anfänger" reagiert und dort gepostet, danke fürs verschieben

@lazydog
danke es hat wunderbar geklappt

ich habe ein neues kleined problem

das hier zeigt mir, wie viele gleiche passwörter in der tabelle vorhanden sind.
Code:
SELECT count(*) as zahl, password FROM `users` GROUP BY password HAVING zahl > 1 ORDER BY password DESC
wie kann ich nun diese datensätze auf ein mal löschen?
__________________
MfG David
axinio Internet Marketing - professionelle Suchmaschinenoptimierung
Bonaparte ist offline   Mit Zitat antworten
Alt 15.02.2008, 08:39  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Wenn du solche SQL-Verrenkungen machen willst solltest du dich mit Subquerys beschäftigen. Das kommt ja bei dem SQL-String von lazydog schon vor.
cycap ist offline   Mit Zitat antworten
Alt 15.02.2008, 09:32  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Die Bemerkung von cycap ist grundsätlich schon richtig, hier findest du die Syntax von Unterabfragen. Nur leider nützt das hier nicht viel. Die Abfrage
PHP-Code:
<?php
DELETE FROM
    users u1
WHERE
    u1
.password IN(
        
SELECT
            u2
.password
        FROM
            users u2
        GROUP BY
            u2
.password
        HAVING
            count
(*) > 1
    
)
?>
müsste das theoretisch machen, wegen den in MySQL enhaltenen Beschränkungen von Unterabfragen funktioniert das leider nicht. Deshalb musst du wohl die entsprechenden Daten zwisschenspeichern, und dann erst anschliessend mit einem
PHP-Code:
DELETE FROM ... WHERE ... IN(..., ..., ...) 
löschen
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Tabellen für Vokabeltrainer anlegen... anonym01 PHP Tipps 2008 9 03.03.2008 21:18
PHP Array in MYSQL Tabellen schreiben Matt Datenbanken 1 26.02.2008 19:43
5 tabellen miteinander verknüpfen. miwo Datenbanken 2 22.09.2007 11:17
DELETE Über mehrere Tabellen und Einträge pchero Datenbanken 12 16.03.2007 02:43
Zeilen aus mehreren Tabellen löschn mit Bezug auf eine Table Riks Datenbanken 3 25.02.2007 20:17
LEFT OUTER JOIN für mehr als 2 Tabellen ? Alpha Centauri Datenbanken 4 05.04.2006 16:18
Ausgabe der Verknüpften tabellen über php skript PHP Tipps 2006 4 07.02.2006 15:04
Join-Abfrage über mehrere Tabellen sinai Datenbanken 3 04.02.2006 13:05
einträge aus 2 tabellen sortieren Tschuu Datenbanken 11 20.12.2005 08:21
[Erledigt] abfrage mehrere tabellen PHP Tipps 2005-2 3 31.10.2005 21:57
[Erledigt] Delete aus mehreren Tabellen - Problem Datenbanken 4 16.09.2005 15:24
delete mit zwei Tabellen Datenbanken 4 23.03.2005 13:08
[Erledigt] Selectanfrage an eine Datenbank,aber aus mehreren Tabellen Datenbanken 2 26.10.2004 07:23
[Erledigt] fulltext suche priorität von tabellen setzen Datenbanken 1 09.08.2004 15:26
DELETE in 2 Tabellen Datenbanken 1 16.07.2004 22:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql delete mehrere tabellen, sql delete über mehrere tabellen, sql delete 2 tabellen, delete sql mehrere tabellen, sql delete from mehrere tabellen, sql delete zwei tabellen, sql delete über zwei tabellen, sql delete aus mehreren tabellen, delete from sql mehrere tabellen, delete sql 2 tabellen, sql delete verknüpfung, delete sql zwei tabellen, sql delete aus 2 tabellen, sql delete in mehreren tabellen, sql delete über 2 tabellen, delete from mehrere tabellen sql, delete sql über mehrere tabellen, sql delete verknüpfte tabellen, delete from mehrere tabellen, sql delete verknüpfen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.