2011-01-07 13 views
0

Ich bin ein SQL-Neuling. Es tut uns leid. Ich habe 3 Tabellen: Dienstleistungen, Städte, city_services. Ich muss alle Dienste, die in einer bestimmten Stadt verfügbar sind (mit city_id) aus der city_services-Tabelle abrufen, aber auch den Dienstnamen aus der Diensttabelle abrufen - alles in einer Anweisung. Ich weiß, dass ich 2 Aussagen und 2 While-Schleifen verschachteln kann (php), aber das scheint ineffizient.SQL beitreten oder was?

Benötige ich einen JOIN oder eine verschachtelte SQL-Anweisung? Ich kann meinen Kopf nicht darum wickeln.

Jede Hilfe oder Ausrichtung in die richtige Richtung wäre großartig!

Danke.

sndwg

Antwort

2

Ja, verwenden Sie eine Verknüpfung. Zum Beispiel:

SELECT service.name, city_service.id 
FROM City_Services AS city_service 
INNER JOIN Services As service ON city_service.service_id = service.service_id 
WHERE city_service.city_id = ? 

(.. Wie Sie die city_id angeben auf Ihrer Datenbank abhängen und wie Sie zugreifen es in dem obigen Beispiel Sie verwenden eine parametrisierte Abfrage mit unbenannte Parameter Ich gehe davon aus)

+0

hallo danke für mich in die richtige richtung. Ich wusste nicht, dass Sie eine Where-Klausel mit einem Join verwenden könnten, da keines der Beispiele im Internet zeigt, dass .... diese Abfrage den Trick ... SELECT a.service_id, b.service_name FROM city_services AS a INNER JOIN Dienste Als b ON a.service_id = b.service_id WHERE a.city_id = x – drav