Zum Inhalt springen

MySQL: Doppelte/Einfache Vorkommen in einer Spalte?


Gast freescale

Empfohlene Beiträge

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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