2009-01-31 11 views
1

Je suis relativement nouveau à MySql.Sélection de plusieurs valeurs différentes tables

J'ai 2 déposé avec la structure suivante

products 
{ 
pid-autoincrement, 
pname 
p_desc 
} 

services 
{ 
sid-autoincrement 
s_name 
s_desc 
} 

Im essayant de sélectionner les produits ou services qui ont le nom '%<somekeyword>%'

J'utilise la requête:

SELECT DISTINCT products.*, 
       services.* 
      FROM products, services 
      WHERE products.pname 
       LIKE '%mob%' 
      OR services.s_name 
       LIKE '%mob%' 

Mais je reçois beaucoup de résultats répétés. Essayé en utilisant jointures, mais n'a pas pu obtenir une solution.

Quelqu'un peut-il m'aider?

Répondre

3

Vous voulez utiliser UNION, comme ceci:

SELECT DISTINCT products.pid-autoincrement AS id, 
       products.pname AS name, 
       products.p_desc AS desc 
      FROM products 
      WHERE products.pname 
       LIKE '%mob%' 
UNION 
SELECT DISTINCT services.sid-autoincrement AS id, 
       services.s_name AS name, 
       services.s_desc AS desc 
      FROM services 
      WHERE services.s_name 
       LIKE '%mob%' 
1

vous devez utiliser l'opérateur UNION

donc vous ne pouvez sélectionner les mêmes colonnes (car il n'y a qu'un seul résultat)

ou vous sélectionnez 2 fois - 2 résultats

1

Parce que les tables ne sont pas liés, vous devrez utiliser l'opérateur UNION (comme Karlis dit), plutôt que JOIN. Mais comme vous voulez apparemment gérer des produits et des services ensemble (au moins une partie du temps), vous feriez mieux de les mettre dans une table et d'ajouter une colonne pour les différencier, comme ceci:

productsandservice [need better name] 
{ 
id, 
name, 
desc, 
isaservice 
}