Je suis assez nouveau à Mon application affichera une liste des membres de la communauté. Si je clique sur un membre, je peux voir une liste de postes fabriqués par les membres. Un message est un objet avec nom, temps et message. Comment puis-je stocker cela dans une base de données code> SQLite code> de manière à ce que je puisse interroger la base de données par J'ai une table d'utilisateurs avec ces colonnes: p> J'ai une table tweet avec ces colonnes: p> SQLITE CODE> et SQL CODE> et je suis en difficulté avec comment aborder les opérations suivantes: userid code> et obtenir la liste des messages d'un utilisateur spécifique. P> USER_ID | NAME | TIME | MESSAGE
3 Réponses :
Il s'agit d'un scénario typique "join" où vous avez une relation unique entre utilisateurs et messages.
Voici un exemple de requête qui afficherait tous les utilisateurs et leurs messages: P> < Pré> xxx pré>
Cela produira un résultateur avec quatre colonnes. Chaque "Tweet" sera affiché avec son enregistrement d'utilisateur associé. Le "u" et P.' La syntaxe sont des alias de table utilisées pour rendre la requête plus facile à lire. p> p>
Merci. Est-ce que je stocke tous les messages de tous les utilisateurs d'une seule table de poste ou existe-t-il une table de poste séparée pour chaque utilisateur?
@Pierre Les bases de données normalisées contiennent généralement une table par "type" de données stockées, il n'est donc pas nécessaire de créer des tables supplémentaires. Vous pouvez ajouter des utilisateurs et des articles associés à ces deux tables.
Ok c'est compris. Merci beaucoup pour une réponse aussi rapide, compétente et utile.
Disons que la post total est 4 de sorte que la requête ci-dessus retournera 4 rangées chaque ligne ayant u.name code> (redondant)?
Vous devez avoir deux tables:
1. utilisateurs forts> p> user_id | Nom p> 2. Tweets forts> P> user_id | Temps | Message p> maintenant pour l'explication: p> Le tableau 1 représente les utilisateurs, il y a toutes les données sur l'utilisateur, comme nom, téléphone, adresse, etc. p> Le tableau 2 est destiné à tous les tweets de tous les utilisateurs, et il y a une colonne qui se connecte entre l'utilisateur et son tweet.
Dans le tableau 2 user_id est une clé étrangère, qui pointe exactement une ligne de la table des utilisateurs. P> Pour obtenir tous les tweets pour un utilisateur, vous pouvez écrire la requête suivante: P> Select TWEETS.MESSAGE, TWEETS.TIME
from Users, TWEETS
where Users.USER_ID = TWEETS.USER_ID
and Users.NAME = "Pierre";
Merci vraiment utile. Malheureusement, je n'ai pas assez de points pour faire preuve de vote votre réponse ...
En évitant le mot-clé de jointure, cette réponse fournit une solution applicable à SQLite également, comme indiqué à l'OP!
Une réponse a déjà été donnée et acceptée déjà, mais je voulais ajouter ceci.
Ce que vous voulez est une table avec les utilisateurs, dans votre Vous pouvez alors "lier" les deux code en effectuant un Par exemple: P> utilisateurs code>. Dans ce tableau, vous stockez vos informations utilisateur ( user_id code>, nom code>). P> Tweets CODE> TABLE, stockez tous les tweets pour tous les utilisateurs. Un tweet par rangée. J'utilise tweet_id code> comme clé clé primaire code> pour le Tweets code> table p> rejoindre code> comme Dave Swersky a dit. p> SELECT u.user_id, u.name, t.time, t.message, t.time
FROM my_users u
INNER JOIN tweets t ON u.user_id = t.user_id
Cela semble être la meilleure approche!
@Terry Seidler Merci beaucoup. Je vais suivre cela quand j'ai gagné de plus de points ... et quel grand lien avec Sqlfiddle. Superbe.
Aucun problème! Bonne chance! Mon «temps» sur SQL Fiddle n'est qu'une valeur de Varchark, mais cela ne devrait pas avoir d'importance;)
J'ajouterais un
tweet_id code> à la table Tweet puis en stockant une ligne pour chaque tweet.@Terryseidler merci, je vais essayer ça.
Vous devrez peut-être supprimer un tweet dans le futur. L'approche de Terry le fait plus clairement, à cause du tweet_id