[SQL] Abfrageproblem

mr.VVoo

PUNKT.
ID: 96656
L
4 Mai 2006
140
0
Hi
ich möchte gerne in einer Abfrage die IDs aus Datenbank A auslesen. DAs kann ich auch grad noch so^^
Nun möchte ich aber wissen, ob diese ID auch in Datenbank B steht (OB, das heißt 0 für nein und 1 für ja). Problem: in der zweiten Datenbank ist das abhängig von einer weiteren ID und der User-ID
Kann mir da jemand weiterhelfen?
 
Mir ist kein SQL-Dialekt bekannt, in dem man über Datenbanken hinweg Queries absetzen kann. Meinst du vielleicht Tabellen? Dann gibt es in "FAQ und Archiv" einen Thread, der dich interessieren dürfte.
 
Ja, sorry ich meine Tabellen. Ich habe zwischenzeitlich ne Lösung gefunden, aber die ist nicht die schönste. Kannst du mir mal die ThreadID geben? Oder nen Link? Das wäre cool!
 
Mir ist kein SQL-Dialekt bekannt, in dem man über Datenbanken hinweg Queries absetzen kann. Meinst du vielleicht Tabellen? Dann gibt es in "FAQ und Archiv" einen Thread, der dich interessieren dürfte.

Mit Datenbank.Tabelle bzw Datenbank.Tabelle.Feld geht das schon... müssen aber natürlich auf dem selben Server leigen.

@mr.VVoo dann Poste mal deine Lösung... die Beschreibung des Problems ist nicht wirklich nachvollziehbar.
 
Code:
SELECT 
	f.f_id AS f_id,
	f.f_name AS f_name,
	(f.f_id IN (SELECT f_id FROM so_ufach WHERE u_id='.$_SESSION['_uid'].' AND u_ks='.$_POST['klassenstufe'].')) AS inuf,
	IF((f.f_id IN (SELECT f_id FROM so_ufach WHERE u_id='.$_SESSION['_uid'].' AND u_ks='.$_POST['klassenstufe'].'))=1,(SELECT uf_kurz FROM so_ufach WHERE f_id=f.f_id AND u_ks='.$_POST['klassenstufe'].' AND u_id='.$_SESSION['_uid'].'),f.f_kurz) AS fkurz,
	IF((f.f_id IN (SELECT f_id FROM so_ufach WHERE u_id='.$_SESSION['_uid'].' AND u_ks='.$_POST['klassenstufe'].'))=1,(SELECT uf_type FROM so_ufach WHERE f_id=f.f_id AND u_ks='.$_POST['klassenstufe'].' AND u_id='.$_SESSION['_uid'].'),0) AS ftype
FROM 
	so_fach AS f ORDER BY f_name

Ich verstehe nicht, warum ich innerhalb der Abfrage nicht auf den Wert 'inuf' greifen kann um diesen auszuwerten, sondern jedes mal dies Sub-Query durchführen muss. Das würde den Spaß ein wenig übersichtlicher machen.
 
Da hilft ein LEFT JOIN... sollte dann ungefähr so aussehen:
PHP:
SELECT
   so_fach.f_id,
   so_fach.f_name,
   IF(so_ufach.f_id IS NULL,so_fach.f_kurz,so_ufach.f_kurz) AS f_kurz
   ...
FROM
   so_fach LEFT JOIN
   so_ufach ON (so_fach.f_id = so_ufach.f_id AND so_ufach.u_id='.$_SESSION['_uid'].' AND so_ufach.u_ks='.$_POST['klassenstufe'].'))
ORDER BY
   so_fach.f_name
 
Ja, ich hatte gestern mal in mein schlaues Buch geschaut und da bin ich auch drauf gestoßen. Ich werde das heute mal austesten und schauen ob das einfacher geht.

THX