phpbar.de logo

Mailinglisten-Archive

Re: AW: Knacknuss mit Kreuztabelle
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AW: Knacknuss mit Kreuztabelle



Hi alle zusammen.

Am Don, 17 Feb 2000 schrieb Peter Cochius:
> Das 'IN' versteht MySQL schon, aber zum jetzigen Zeitpunkt sind SubSelects
> noch nicht impementiert.
> so geht z.B. problemlos :
>   SELECT * FROM tabelle WHERE tabelle.ID IN (1,4,10,12);
 
Das ursprünglich Problem lässt sich auch mit "IN" lösen, aber dazu muß eine
(temporäre) Tabelle benutzt werden, da die IN-Liste auch eine Spalte einer
Tabelle sein darf (zumindest bei Version 3.22.25). 

Ich nehme mal an, dass die ID's Int sind:

# Tabelle erzeugen:
create table temp1 (ID int not null, INDEX ID (ID));

# alle Kurs-ID's in die temp1 holen, bei denen der Lehrer eingetragen ist:
insert into temp1 select ku_id from Adressen, AdressKurs where
AdressKurs.ad_id=Adressen.ad_id AND Name = 'Schmidt' AND Funktion=1;

# nun alle Schüler
select Name, Vorname, ... from Adressen, AdressKurs, temp1 where
ku_id IN (temp1.ID) AND AdressKurs.ad_id=Adressen.ad_id AND Funktion=0;

Wenn's dabei Performance-Probleme geben sollte, muss man sich mal die Indexe
anschauen (explain hilft da sehr!).

Das Ganze lohnt sich latürnich nur, wenn entweder sehr viele ku_id in die
Tabelle eingetragen werden (sonst kann man die IN-Liste auch von Hand füllen)
oder diese Abfragen häufiger vorkommen.

Ciao, Rene

--
----------------------------------------------------------------------
  mailto:rene.fertig_(at)_wtal.de         http://home.telebel.de/referti/
======================================================================
>>>>>>>>>>>>  PGP-Key auf Anfrage +++ PGP-Key on request  <<<<<<<<<<<<

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive