Zum Inhalt springen

MySQL: Doppelte/Einfache Vorkommen in einer Spalte?


Empfohlene Beiträge

Geschrieben

Hallo Leute,

ich habe hier folgende Tabellenstruktur:

a_NameToId

- ItemId int

- Name varchar

b_IdToTime

- TimeId int

- ItemId int

- DateAndTime timestamp

c_TimeIdToData

- TimeId int

- Code varchar

- Info varchar

meine bisherige Query ist:

SELECT

  c.TimeId,

  c.Code

FROM

  c_TimeIdToData AS c

LEFT JOIN

  b_IdToTime AS b

  ON b.TimeId = c.TimeId

LEFT JOIN

  a_NameToId AS a

  ON a.ItemId = b.ItemId

WHERE

  a.Name = "Katze"

  AND

  (c.TimeId = 5 OR c.TimeId = 1)

Die Ausgabe hiervon ist dann auch...

1;"AA"

1;"CC"

1;"DD"

1;"FF"

5;"AA"

5;"CC"

5;"EE"

nun möchte ich die Query aber so ändern, dass ich

- die Elemente angezeigt bekomme, welche unter beiden IDs zu finden sind

- nur die Elemente sehe, welche in 5 vorkommen, aber NICHT in 1

- und umgekehrt.

Hat jemand von euch eine Idee wie ich das realisieren könnte? :ka:

Oder, .. noch genialer wäre, ein Feld "Vorkommen" welches bei zwei treffern 0 ist, bei einem in "1" -1 ist und bei nur in "5" +1 wäre.. :ka:

also, um bei dem Beispiel zu bleiben:

"AA";0 (gleich)

"CC";0 (gleich)

"DD";-1 (weggefallen)

"EE";1 (neu)

"FF";1 (neu)

Geschrieben

Hmm hab es doch auch allein geschafft. :-)

Falls es jemanden interessiert,

hier meine Lösung:


SET @oldId = 1;

SET @newId = 5;

SET @name  = "Katze";


SELECT

  c.Code,

  NOT EXISTS

  (

    SELECT *

    FROM

      c_TimeIdToData AS c2

    WHERE

          c2.TimeId = @oldId

      AND c2.Code   = c.Code

  ) AS compare_IsNew,

  NOT EXISTS

  (

    SELECT *

    FROM

      c_TimeIdToData AS c2

    WHERE

          c2.TimeId = @newId

      AND c2.Code   = c.Code

  ) AS compare_IsDropped

FROM

  c_TimeIdToData AS c

LEFT JOIN

  b_IdToTime AS b

  ON b.TimeId = c.TimeId

LEFT JOIN

  a_NameToId AS a

  ON a.ItemId = b.ItemId

WHERE

  a.Name = @name

  AND

  (

        c.TimeId = @oldId

     OR c.TimeId = @newId

  )

GROUP BY

  c.Code;

Code;compare_isNew;compare_isDropped

"AA";0;0

"BB";1;0

"CC";0;0

"DD";0;1

"EE";1;0

"FF";0;1

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...