# Problem mit SQl Abfrage (Zeilen zusammenfassen)



## atlantyz (7. Oktober 2009)

Hallo,

ich habe eine Tabelle mit zwei Spalten. In der ersten steht eine Bearbeiter Nummer und in der zweiten eine dazugehörige Notiznummer. Nun möchte ich eine Abfrage erstellen, in der verglichen wird, ob zwei verschiedene Bearbeiter schonmal die selbe Notiz angesehen haben. Wenn ja, sollen diese Zeilen nicht mehr berücksichtigt werden. Ich möchte am Ende nur Zeilen haben, in denen ein Bearbeiter alleine eine Notiz gemacht hat. Leider bekomme ich das irgendwie nicht hin.

Zur Verdeutlichung:

Meine Tabelle:

Bearbeiter Nr.       Notiz Nr.
1                               1
2                               1
1                               2
2                               2
1                               3

So, ich hätte nun gerne nur die letzte Zeile angezeigt bekommen, also da, wo die Notiz nur einmal erwähnt wird. Aber ich bekomm die Abfrage nicht hin.

Hier mal mein Versuch:


```
SELECT notiz_informationen . *
FROM (
ticket_notiz
INNER JOIN notiz_informationen ON ticket_notiz.notiz_id = notiz_informationen.notiz_id
)
WHERE ticket_notiz.ticket_id = '441'
AND bearbeiter_id <>1
```

Nun bekomme ich alle Notizen von einem Bearbeiter... also nicht das, was ich will.

Nächste Variante:


```
SELECT notiz_informationen.* 
FROM (ticket_notiz inner join notiz_informationen 
ON ticket_notiz.notiz_id = notiz_informationen.notiz_id) 
WHERE ticket_notiz.ticket_id = '441' 
GROUP BY notiz_informationen.notiz_id
```
Jetzt bekomm ich zwar das Ganze wunderbar zusammengefasst, kann aber mit dem Ergebnis rein gar nichts anfangen, weil die Zeilen, die übereinstimmen immer noch drin sind...

Vielleicht hat noch jemand ne Idee

Ach so: meine Abfragen beinhalten noch eine zweite Tabelle, weil ich sonst die Ticketnotizen keinem Ticket zuordnen kann.


----------



## dki (7. Oktober 2009)

Ich würde zählen, wieviele Einträge zu jeder NotizNr. es gibt, und dann nur die anzeigen die = 1 sind.

Also so:


```
SELECT NotizNr, COUNT(NotizNr) 
FROM ticketNotiz 
GROUP BY notizNr 
HAVING COUNT(NotizNr)=1
```

Edit: aus dem > ein = gemacht.


----------



## Buschiii (7. Oktober 2009)

In dem Fall  "= 1" und nicht " > 1", richtig?


----------



## dki (7. Oktober 2009)

genau... war dabei alle zu geben wo schon mehr als einer die Notiz sich angesehen haben.

werde es gerade mal abändern.


----------



## atlantyz (7. Oktober 2009)

Nee, ich habe grad gesehen, das funktioniert nicht.

Wenn ich Bearbeiter 1 bin und Bearbeiter 2 und 3 haben sich die Notiz schon angesehen, dann brauch ich immer noch alle Notizen, die ich noch nicht gesehen habe, obwohl es dazu schon mehrere Einträge gibt. Es muss ne Möglichkeit geben die Einträge so zu vergleichen, dass immer geguckt wird, ob ich den Eintrag auch schon gesehen habe.


----------



## dki (7. Oktober 2009)

Mhh das ist aber ein bisschen anders als du es oben beschrieben hast 


```
SELECT DISTINCT NotizNr 
FROM ticketNotiz
WHERE notizNr NOT IN 
  (SELECT NotizNr  
   FROM ticketNotiz 
   WHERE bearbeiterNr=1)
```


----------

