MySQL Schnittmenge Abfrage Problem
Hallo,
komme bei einer evtl. simplen Abfrage nicht weiter.
Folgende Tabelle:
uid_local | uid_foreign
1 | 3
2 | 3
1 | 6
3 | 6
Nun möchte ich alle Reihen mit der uid_local 1 und 2 ausgeben lassen. Aber nur die mit gleicher uid_foreign.
Eine Abfrage nach den Reihen mit der uid_local 1, 2 und 3 sollte also keine Reihe ausgeben.
Ist das mit einer Abfrage zu schaffen oder muss ich mir da was anderes einfallen lassen?
Danke & Viele Grüße,
Nils
komme bei einer evtl. simplen Abfrage nicht weiter.
Folgende Tabelle:
uid_local | uid_foreign
1 | 3
2 | 3
1 | 6
3 | 6
Nun möchte ich alle Reihen mit der uid_local 1 und 2 ausgeben lassen. Aber nur die mit gleicher uid_foreign.
Eine Abfrage nach den Reihen mit der uid_local 1, 2 und 3 sollte also keine Reihe ausgeben.
Ist das mit einer Abfrage zu schaffen oder muss ich mir da was anderes einfallen lassen?
Danke & Viele Grüße,
Nils
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 151643
Url: https://administrator.de/forum/mysql-schnittmenge-abfrage-problem-151643.html
Ausgedruckt am: 27.12.2024 um 16:12 Uhr
5 Kommentare
Neuester Kommentar
Hallo Nils,
und
sind verschiedene Abfragen.
Was willst du denn nun?
Das wäre diese Abfrage.
select uid_local,uid_foreign from tabelle where uid_local in ('Keyword1', ... ,'KeywordN')
order by uid_local
wäre
select a.uid_local,a.uid_foreign from tabelle a
where a.uid_local in ('1','2')
and a.uid_foreign in (select b.uid_foreign from tabelle b where b.uid_local in ('1','2') )
Bei der zweiten Abfrage bin ich mir nicht ganz sicher. Vielleicht meldet sich ja Biber dazu mal.
grüße vom it-frosch
Nun möchte ich alle Reihen mit der uid_local 1 und 2 ausgeben lassen. Aber nur die mit gleicher uid_foreign.
und
Man soll bestimmte Keywords (uid_local) auswählen können und dann nur die Inhaltseinträge (uid_foreign) angezeigt bekommen, die mit den Keywords verknüpft wurden.
sind verschiedene Abfragen.
Was willst du denn nun?
Man soll bestimmte Keywords (uid_local) auswählen können und dann nur die Inhaltseinträge (uid_foreign) angezeigt bekommen, die mit den Keywords verknüpft wurden.
Das wäre diese Abfrage.
select uid_local,uid_foreign from tabelle where uid_local in ('Keyword1', ... ,'KeywordN')
order by uid_local
Nun möchte ich alle Reihen mit der uid_local 1 und 2 ausgeben lassen. Aber nur die mit gleicher uid_foreign.
wäre
select a.uid_local,a.uid_foreign from tabelle a
where a.uid_local in ('1','2')
and a.uid_foreign in (select b.uid_foreign from tabelle b where b.uid_local in ('1','2') )
Bei der zweiten Abfrage bin ich mir nicht ganz sicher. Vielleicht meldet sich ja Biber dazu mal.
grüße vom it-frosch
SELECT
`uid_foreign`,
GROUP_CONCAT(DISTINCT `uid_local` ORDER BY `uid_local` ASC SEPARATOR ', ') AS 'uid_local_list'
FROM `tab_100923`
GROUP BY `uid_foreign`;
nun könnte man darin nach der richtigen Kombination suchen.
SELECT temp.`uid_foreign`
FROM (
SELECT `uid_foreign`, GROUP_CONCAT( DISTINCT `uid_local` ORDER BY `uid_local` ASC SEPARATOR ', ' ) AS 'uid_local_list'
FROM `tab_100923`
GROUP BY `uid_foreign`
) AS `temp`
WHERE temp.`uid_local_list` LIKE '1, 2';