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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...