2017-03-23 2 views
0

Semblé simple quand j'ai commencé et l'ai fait avant, maintenant je me suis confondu et à un barrage routier.SQL est-ce externe et interne rejoindre et comment rejoindre sur Array

Avoir deux tables: News_Table et un People_Table. Sous le News_Table il y a un champ: News_People_Contributed et il a les ID du People_Table dans le format de tableau (1,4,7,10) ainsi quatre personnes ont contribué. Je crée un paramètre de recherche qui recherche News_Header AND News_People_Contributed et ne peut pas comprendre comment créer la colonne de recherche.

News_Table 
News_ID 
News_Header 
News_People_Contributed 

People_Table 
People_ID 
People_First_Name... 

Est-il quelque chose comme ...

Select* 
From News_Table 
Left Join News_Table 
On People_Table.People_ID IN (News_Table.News_People_Contributed) 
Where Search_Param Like '%News_Header%' OR Search_Param Like '%People_First_Name%' 

Le problème est (News_Table.News_People_Contributed) est une chaîne et les ID ne sont pas. De plus, je n'ai peut-être pas de contributeurs, etc. Pour rendre le problème encore plus complexe, je le fais dans MS Access au lieu de MySql, donc je dois le coder "old school" pour travailler.

+0

News_People_Contributed a ID comme une chaîne, pas de champ multi-valeur? Ne voyez pas comment vous auriez pu faire cette requête auparavant si le champ est une chaîne. Stocker en tant que chaîne est un très mauvais design. – June7

+0

c'était un menu multi-sélection pour le rendre facile. Sinon, je dois créer une troisième table reliant les deux autres tables - fait cela avant deux heures. J'aime utiliser des tableaux parce que c'est plus propre et plus facile à faire pour les boucles sur d'autres objets. Peut toujours diviser la chaîne aussi pour appeler tableau. – Brewy

+0

Ceci est une mauvaise structure de la table. Vous devriez avoir une troisième table joignant les deux. Ensuite, créez une requête sur les trois tables et recherchez-la. Vous mentionnez mysql, Qu'est-ce que cela a à voir avec quoi que ce soit? – AVG

Répondre

0

Effectuez une jointure croisée et filtrez les correspondances dans la liste de chaînes. Il ne dit rien sur l'efficacité ou la forme (comme déjà commenté), mais cela fonctionne. Cela ne répond qu'à une partie du problème: La jointure - le problème que tout le monde semblait préoccupé dans les commentaires initiaux. Il n'y a pas assez de détails sur le paramètre Search_Parameter pour fournir de l'aide à ce sujet. Fournir plus de détails si vous avez besoin de plus d'aide là-bas.