Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Tabellen vergleichen

Moin zusammen

Ich hab da folgendes Problem

ich habe 1 Tabelle in der sich die Top100 befindet, nun möchte ich die Interpreten mit dem Album der vorwoche mit der derzeitigen vergleichen um heraus zu finden welches Album diese Woche aus der KW raus ist.

Struktur wäre

Interpret, Album, KW, Jahr. aussteiger

Es wäre nicht schlecht dieses mit einem Update Befehl zu bewerkstelligen um bei dem jeweiligen Album in die Spalte 'aussteiger' ein raus zu setzen....


um die Platzierung der Vorwoche zu vergleichen benutze ich folgendes was auch klappt, nur bekomme ich das nicht umgeschrieben

UPDATE alben AS a,
alben AS b SET a.VW = b.Platz WHERE a.KW = b.KW +1 AND a.Jahr = b.Jahr AND a.album = b.album AND a.KW = 11 AND a.Jahr =2004

Kann mir da jemand weiter helfen ????

Hier gehts zum Orginal Eintrag "Tabellen vergleichen" im Forum

Antworten

Bin ein Stück weiter

SELECT alt.interpret, alt.titel from top100 as alt LEFT join top100 as neu
ON (alt.interpret=neu.interpret AND alt.titel=neu.titel)
WHERE (KW=10 OR KW=11) AND neu.interpret IS NULL;

nur warum wird die KW angemeckert ?????

Jemand eine Idee, ich krieg ne Krise


2.

Habs gefunden

alt.kw=10 OR neu.kw=11

nur wohin jetzt mit dem Jahr ???????????

Beispiel 2004 ????


3.

eigentlich möchtest Du, dass alt.KW=10 ist und neu.KW=11

und jetzt möchstest Du auch noch, dass Jahr=2004 ist - sowohl bei alt als auch bei neu


4.

jo ich denke mal das muss bei alt sowie bei neu eingesetzt werden genauso wie bei der Abfrage....
Das hat mir gestern eine schlaflose Nacht beschert....


5.

warum bringt mir diese Abfrage keine Ergebnisse ????

SELECT alt.interpret, alt.titel
FROM top100 AS alt
LEFT JOIN top100 AS neu ON ( alt.interpret = neu.interpret AND alt.titel = neu.titel )
WHERE ( alt.KW =10 AND neu.KW =11 AND alt.jahr=2004 AND neu.jahr=2004)AND neu.interpret IS NULL;


6.

Ich komme einfach nicht weiter

schau dir mal die Abfrage an ich weiss nicht was da noch falsch dran denn ich bekomme keine Ergebnisse

SELECT alt.interpret, alt.titel
FROM top100 AS alt
LEFT JOIN top100 AS neu ON ( alt.interpret = neu.interpret AND alt.titel = neu.titel )
WHERE alt.KW =10 AND neu.KW =11 AND alt.jahr =2004 AND neu.jahr =2004 AND alt.interpret IS NULL;


7.

FERTIG

SELECT b.Titel, a.Titel, a.Platz, b.Platz AS VWP
FROM top1002 AS a
LEFT JOIN top1002 AS b ON a.KW = b.KW -1 AND a.Titel = b.Titel
WHERE a.KW =10 AND a.Jahr =2004 AND b.Interpret IS NULL LIMIT 0 , 30

jetzt gibt es alle Aussteiger


8.

So ist es noch besser

SELECT a.Interpret, a.Titel, a.Platz
FROM top1002 AS a
LEFT JOIN top1002 AS b ON a.KW = b.KW -1 AND a.Titel = b.Titel
WHERE a.KW =10 AND a.Jahr =2004 AND b.Interpret IS NULL


9.

kann man das umstricken das ein Update ausgeführt wird und in die Spalte aussteiger ein 'raus' gestzt wird ???


10.

kann man nicht einfach aus dem Resultat nur die titel_id updaten ???

SELECT a.titel_id
FROM top1002 AS a
LEFT JOIN top1002 AS b ON a.KW = b.KW -1 AND a.Titel = b.Titel
WHERE a.KW =10 AND a.Jahr =2004 AND b.Interpret IS NULL

und dann die ausgeworfenen titel_id updaten aussteiger = 'raus'


11.

Und nun der Update Befehl

update top100 as a
left join top100 as b
on a.KW = b.KW -1 AND a.Titel = b.Titel AND a.Interpret = b.Interpret
set a.aussteiger = 'raus'
where a.KW =09 AND a.Jahr =2004 AND b.Interpret IS NULL;


Hier gehts zum Orginal Eintrag "Tabellen vergleichen" im Forum
 
phpforum.de | Impressum | Handy Bundles