[TYPO3-german] sql-statement

Michael Kasten home at m-kasten.de
Tue Jan 31 16:22:51 CET 2012


Ah sorry ich hatte was von zwei Tabellen gelesen und dachte na gut wenn es einen gemeinsamen 
Schlüssel gibt wäre das ja ein klassisches Join konstrukt, da lag ich wohl falsch.

Ich weiß jetzt nicht ob die Anzahl deiner Bedingungen Variabel ist ich gehe jetzt mal von zwei 
positiven und einem negativen wert aus, das lässt sich mit subselects ganz gut lösen:

So sieht die Tabelle bei mir jetzt aus:

CREATE TABLE IF NOT EXISTS `test` (
   `uid_local` int(11) NOT NULL,
   `uid_foreign` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;



SELECT `uid_local`
FROM `test`
WHERE `uid_foreign` = 101
AND `uid_local` IN (
   SELECT `uid_local`
   FROM `test`
   WHERE `uid_foreign` = 102
)
AND`uid_local`  NOT IN (
   SELECT `uid_local`
   FROM `test`
   WHERE `uid_foreign` = 104
)

Passt das?


am 31.01.2012 14:45 Alisha schrieb:
> ja, sicher - auf was willst du hinaus?
>
> das ist eine N zu M-Beziehung zw. zwei Tabellen, deshalb die eigene Tabelle für die Verknüpfungen...
>
> ich kann mich dunkel erinnern, dass ich auch in einer Abfrage eine Tabelle mit einer virtuellen
> Kopie der gleichen Tabelle über joins verknüpfen kann a la tabelle1_tabelle2_mm as tab1 inner join
> tabelle1_tabelle2_mm as tab2... meinst du das?
> bräuchte ich dann aber nicht bei 19 verschiedenen Foreign-Keys 19 virtuelle Tabellen? Das ist sicher
> nicht sehr performant.
> Aber vielleicht gehts ja auch viel einfacher... Wie gesagt, kann auch sein, dass ich gerade komplett
> auf der Leitung stehe...
>
>
> Am 31.01.2012 14:29, schrieb Michael Kasten:
>> Hast du dir schon Join Konstrukte angesehen?
>>
>>
>> am 31.01.2012 14:21 Alisha schrieb:
>>> Hi,
>>> hat jetzt nicht zwangsläufig was mit Typo3 zu tun, aber vielleicht hat
>>> ja trotzdem jemand einen
>>> Tipp? Ich steh gerade auf der Leitung...
>>> Ich habe eine mm-Tabelle:
>>>
>>> tabelle1_tabelle2_mm
>>>
>>> mit folgenden Werten
>>> uid_local uid_foreign
>>> 1 101
>>> 1 102
>>> 2 101
>>> 2 102
>>> 2 103
>>> 3 101
>>> 3 102
>>> 3 104
>>>
>>> etc.
>>> nun brauche ich eine Abfrage, die mir die uid_local ausgibt, auf die
>>> unterschiedliche Bedigungen in
>>> Bezug auf uid_foreign zutreffen müssen
>>> also z.b.
>>> gib alle uid_local mit uid_foreign = 101 UND uid_foreign = 102 ABER
>>> NICHT uid_foreign = 104
>>>
>>> im obigen Beispiel dürften nur 1 und 2 ausgegeben werden...
>>>
>>> mysql 5...
>>>
>>> Muss ich mit virtuellen Tabellen arbeiten? Mit Group komme ich nicht
>>> weiter...
>>>
>>> vg
>>> alisha
>>>
>>> _______________________________________________
>>> TYPO3-german mailing list
>>> TYPO3-german at lists.typo3.org
>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

-- 
Michael Kasten | http://m-kasten.de
Im wirklichen Leben gibt es kein [Strg]+[Z]


More information about the TYPO3-german mailing list