2010-08-18 1 views
0

J'ai base de données avec schéma sur l'image ci-dessous et j'ai besoin de sélectionner tout ce qui concerne une ligne (un ID) de [letaky]. Cela signifie que [zamestnanci], chaque [obsah] et chaque [knihy] qui s'y rapportent.Comment sélectionner à partir de base de données avec des relations?

C'est la première fois que j'ai utilisé les relations dans la base de données et je n'ai aucune idée de comment faire un tel choix.

http://img248.imageshack.us/img248/4548/schemai.png

+0

Quel est le motif de la dénomination bizarre? Aucun problème particulier avec ceci, c'est juste que ce sera plus facile de comprendre les relations si elles avaient des noms significatifs. Sauf si c'est une langue différente. –

+0

J'ai fait l'image pour vous ... – Benjol

+0

Oui, c'est une langue différente. "Zamestnanci" = Employés, "idzamestnance" = "employee_id" etc. – Josef

Répondre

3

... Utilisez REJOIGNEZ ON:

SELECT * 
FROM zamestnanci 
JOIN lekaty ON lekaty.zamestnanciid = zamestnanci.id 
JOIN obsah ON obsah.idletaku = lekaty.id 
JOIN knihy ON knihy.id = obsah.idknihy 
WHERE letaky.id = 123 

Vous pouvez également vous demander si vous avez besoin INNER JOIN, LEFT JOIN ou RIGHT JOIN pour chacun de ces jointures. La différence entre ces jointures est décrite dans beaucoup d'autres questions sur StackOverflow, par exemple celui-ci:

SQL Join Differences

+0

Ça marche! Merci – Josef

+0

Donc, pour clarifier, ajouter des relations dans la base de données ne change pas la façon dont vous sélectionnez les données avec une requête. Serait alors ajouter la relation juste empêcher la suppression accidentelle de données connectées? –

Questions connexes