Zwei SELECT-Abfragen verknüpfen (Umkreissuche und Kategorie)

Quests Sohn

Mitglied
Hallo,

ich möchte zwei Abfragen, die ich geschrieben habe und die auch jeweils für sich funktionieren verbinden:

1. Die Umkreissuche

Tabelle "staedte": stadtid, breitengrad, laengengrad, stadtplz, stadt

PHP:
$query = "SELECT plz, (" . $radius . " * SQRT(2*(1-cos(RADIANS(breitengrad)) * cos(".$rad_b.") * (sin(RADIANS(laengengrad)) * sin(".$rad_l.") + cos(RADIANS(laengengrad)) * cos(".$rad_l.")) - sin(RADIANS(breitengrad)) * sin(".$rad_b.")))) AS distance FROM staedte HAVING distance <= ".$umkreis;

2. Die Anbieterabfrage

- Tabelle "anbieter": anbieterid, name, email, plz, status
- Tabelle "anbieterkategorien": kategorieid, anbieterid

PHP:
$query = "SELECT email FROM anbieter anb INNER JOIN anbieterkategorien kat USING (anbieterid) WHERE aka.kategorieid = '".mysql_real_escape_string($katid)."' AND anb.status = '1'";

Jetzt möchte ich aber mit meiner Anbieterabfrage nur solche Anbieter finden,
deren PLZs in einem Umkreis von X Km rund um eine vorgegebene PLZ liegen.

Ich bekomme es einfach nicht hin, diese zwei Queries zu verbinden.


Kann mir jemand weiterhelfen?
Vielen Dank!
 
Mit diesen Angaben könnte das schwer werden.
Du hast - in den Abfragen jedenfalls - keinerlei Verknüpfungspunkt, z.B. eine PLZ des Anbieters wäre schon hilfreich genug...
 
Du kannst einfach im WHERE den Platz mit IN hinzufügen

SQL:
SELECT 
	anb.*
FROM 
	anbieter anb 
	INNER JOIN anbieterkategorien kat 
		USING (anbieterid) 
WHERE 
	aka.kategorieid = '{$katid}' 
	AND anb.status = '1'
	AND anb.plz IN (
			SELECT
				st.plz
			FROM
				(
					SELECT 
						plz, 
						({$radius} * SQRT(2*(1-cos(RADIANS(breitengrad)) * cos({$rad_b}) 
						* (sin(RADIANS(laengengrad)) * sin({$rad_l}) + cos(RADIANS(laengengrad)) * cos({$rad_l})) 
						- sin(RADIANS(breitengrad)) * sin({$rad_b})))) AS distance
					FROM
						staedte
				) AS st
			WHERE
			 	st.distance <= {$umkreis};  
		)
;
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück