2010-04-21 2 views
3

J'ai deux tables dans une base de données MySQL.Les données de deux tables sans répéter les données de la première?

utilisateurs table et utilisateurs Meta Tableau

Je cherche un moyen d'obtenir toutes les informations sur les deux tables avec une seule requête. Mais sans répéter les informations de la table des utilisateurs.

Il s'agit également de toutes les informations relatives au numéro d'identification de l'utilisateur. Ainsi par exemple user_id = 1.

Existe-t-il un moyen d'interroger la base de données et de collecter toutes les informations I des deux tables sans répéter les informations de la première?

Structure Exemple

utilisateur Tableau

  • user_id
  • user_login
  • User_Pass

utilisateur Meta Tableau

  • user_meta_id
  • user_id
  • user_meta_key
  • user_meta_value

Im voulant sortir de cette

user_id, user_login, user_pass, user_meta_id, user_id, user_meta_key, user_meta_value 
           user_meta_id, user_id, user_meta_key, user_meta_value 
           user_meta_id, user_id, user_meta_key, user_meta_value 
+1

Pouvez-vous donner un exemple? –

Répondre

1

Bien sûr, c'est facile, il suffit de spécifier les champs que vous voulez à partir de chaque table dans la requête avec une jointure et n'inclut pas les colonnes qui sont répétées.

SELECT Users.field1, Users.field2, Users.field3, Users.user_ID, 
     UsersMeta.field4, UsersMeta.field5 
FROM USERS 
LEFT JOIN UsersMeta ON (Usuers.user_ID=UsersMeta.User_ID) 
+0

Peut vouloir quitter la jointure si vous voulez obtenir tous les enregistrements des utilisateurs même s'ils n'ont pas d'enregistrements dans la méta. – invertedSpear

+0

Veuillez ne pas promouvoir les requêtes non-ANSI. Devrait être: 'choisir u.Field1, u.Field2, u.Field3, u.user_id, um.Field4, um.field5 des utilisateurs u interne rejoindre UsersMeta um sur u.user_id = um.user_id' – RedFilter

+0

Ma lecture de la question m'a fait imaginer une requête syndicale ... peut-être plus d'informations nécessaires. – Smandoli

0

Vous n'avez pas mentionné le serveur de base de données que vous utilisez.

vos tables sont supposant comme:

USERS (user_id, first_name, last_name, gender) 
USER_META (user_id, comment_count, likes) 

Votre requête ressemblerait à ceci dans MySQL:

SELECT u.user_id, first_name, last_name, gender, comment_count, likes 

des utilisateurs u LEFT JOIN USER_META m (u.user_id = m.user_id) ;

0

oui, il est possible à l'aide DISTINCT mot-clé dans la requête

SELECT DISTINCT Users.field1, DISTINCT users.field2, UsersMeta.field3 
      FROM USERS, UsersMeta 
    WHERE Users.user_ID=UsersMeta.User_ID 

Distinct description

0

C'est l'œuvre d'outils frontaux/langue, par exemple Crystal Report, PHP, C#, etc. Ne le faites pas dans la requête

1
SELECT DISTINCT table1.id, table1.field2, table1.field3, tab_id.id_table1 
FROM table1 
LEFT JOIN tab_id ON (table1.id=tab_id.id_table1) 
Questions connexes