2009-05-06 12 views
1

J'essaie de joindre deux tables; le but étant de pouvoir rechercher et afficher des informations d'événement pour un artiste qui est entré par l'utilisateur.Question sur la jonction de deux tables mysql

Les tables sont les suivantes:

Table artiste: [id], [nom]

table d'événements: [id], [artist_id], [venue_name], [ville], [ state], [date], [heure]

J'ai créé un moteur de recherche, mais ce que je veux faire est quand un nom d'artiste est entré dans la zone de texte, le code ira à ma base de données et regardera à travers la table de l'artiste pour voir quel nom a été entré, puis prenez l'identifiant qui correspond au nom entré, puis allez à la table des événements pour trouver cet artiste_id distinct Affiche toutes les informations sur l'événement pour l'artiste sélectionné.

Je voudrais vraiment de l'aide avec comment faire cela et je ne suis pas le meilleur à cela, mais j'essaie! Merci :)

Répondre

6
SELECT * 
FROM artist 
    LEFT JOIN events 
     ON artist.id = events.artist_id 
WHERE artist.name = 'your search text' 
+0

Ne pas soulever pour ma propre réponse ... Mais en supposant une base de données assez normalisée, cela va retourner plus de données que ce qui est strictement nécessaire. Encore, +1 pour être structurellement sain. Surveillez également la validation des entrées sur le bit "votre texte de recherche". Injection SQL en attente d'y arriver. – Adrien

+0

@Adrien, Vous avez probablement raison, mais j'ai supposé qu'ils voulaient également que les détails de l'artiste pour l'affichage dans l'interface utilisateur ou quoi que ce soit, d'où le "SELECT *" et le "LEFT JOIN". – LukeH

+0

@Luke: D'accord, d'où le upvote de moi. J'ai été accusé de "suranalyser" le problème (en particulier les problèmes de devoirs) de temps en temps. :) – Adrien

3
select e.venue_name, e.city, e.state, e.date, e.time 
from artist_table a 
    join events_table e 
    on a.id = e.artist_id 
where a.name = @userInput 

ou quelque chose comme ça ... Ou est-ce que quelque chose me manque? Est-ce que c'est une question d'un devoir?

+0

+1 de moi - le point va à la rapidité. 8) – duffymo

+0

oui, c'est un projet de devoirs dû à demain:/ – Holly

0
select a.name, e.* 
from artist as a 
    left join events on(a.id - e.artist_id) 
     where a.name like '%$someinput%'

juste au cas où vous ne voulez pas trouver le nom correspond exactement.

Juste essayer d'aider. et je suis sûr que je ne suis pas bon à ce , mais je veux aider car au début, c'est compliqué pour moi aussi