Requête sur deux tables

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

jbtz64
Nouveau WRInaute
 
Messages: 21
Inscription: Mer Mai 28, 2008 20:56

Requête sur deux tables

Message le Sam Mai 31, 2008 19:10

bonsoir, je voudrais un conseil sur un requête dont j'ai besoin pour mon site.

j'ai deux tables : la première News contenant id_news, titre, contenu et date.
la deuxième Utilisateurs contenant : id_utilisateurs, nom_utilisateur, email_utilisateur, ville_utilisateur

et j'aimerais pouvoir afficher toutes ces infos si la news a été publiée aujourd'hui et par des utilisateurs vivant dans la même ville

Code :
SELECT COUNT(*) AS total
FROM Utilisateurs, News
WHERE Utilisateurs.nom_utilisateur = News.nom_utilisateur
AND ville_utilisateur='Paris'
AND date='$date';ca m'affiche bien toutes les news venant d'utilisateurs de la même ville, mais par contre pour la date il y a une légère erreur, ca m'affiche toutes les news de la table , si une news au moins a été écrite ce jour là ...

qu'en pensez-vous ? quelqu'un a une idée ?
merci, bonne soirée.


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Sam Mai 31, 2008 19:32

Hummm, là ta requête va chercher les news d'utilisateurs venant de paris ayant écrit une news à la date $date.
La syntaxe me semble correct (sauf que faire une jointure sur un nom alors qu'on a des ID c'est pas du tout recommandé).

Vérifie après ce que contient de variable $date (est ce bien sous la forme aaaa-mm-jj? Est ce que tes tables ont bien un champs date de type date ou datetime?

jbtz64
Nouveau WRInaute
 
Messages: 21
Inscription: Mer Mai 28, 2008 20:56

re:

Message le Sam Mai 31, 2008 19:54

j'ai quasiment aucun doute sur ma variable date, car cette requête me ramene toutes les news de ma table si une au moins a été écrite au jour demandé, c'est bien ça le problème.

pour la jointure c'est préférable que je rajoute un id dans les deux tables, c'est bien ça ?


Aye-Aye
WRInaute accro
WRInaute accro
 
Messages: 1910
Inscription: Ven Avr 15, 2005 8:52

Message le Sam Mai 31, 2008 20:11

Tu as oublié de préciser que nom_utilisateur doit aussi être un champ de News, non ? :roll:

jbtz64
Nouveau WRInaute
 
Messages: 21
Inscription: Mer Mai 28, 2008 20:56

re:

Message le Sam Mai 31, 2008 20:17

je pense pas, il me semble que cette ligne sert à ça ? non !?
WHERE Utilisateurs.nom_utilisateur = News.nom_utilisateur

mais je suis pas sur...


Aye-Aye
WRInaute accro
WRInaute accro
 
Messages: 1910
Inscription: Ven Avr 15, 2005 8:52

Message le Sam Mai 31, 2008 20:21

Cette ligne qui met en place une jointure suppose que tu aies un champ commun dans les 2 tables qui ici serait nom_utilisateur...
Mais comme le dit Bactéries, il vaut mieux que cela soit id_utilisateurs qui permettent la jointure (si j'ai bien compris une news est écrite par un utilisateur... c'est cela ?).

Mets à jour ta table News, en incluant un champ id_utilisateurs qui te permettra de faire ta jointure...
Code: Tout sélectionner
SELECT COUNT(*) AS total
FROM Utilisateurs, News
WHERE Utilisateurs.id_utilisateurs = News.id_utilisateurs
AND Utilisateurs.ville_utilisateur='Paris'
AND News.date='$date';


cyberlahy
WRInaute discret
WRInaute discret
 
Messages: 78
Inscription: Mar Avr 04, 2006 0:10

Message le Lun Juin 02, 2008 2:39

Je pense plutôt par une 3è table

News(id_news, titre, contenu, date)
Utilisateurs(id_utilisateurs, nom_utilisateur, email_utilisateur, ville_utilisateur)
News_Utilisateurs(id, id_news, id_utilisateurs, date)

Dont la news que l'utilisateur a publié pour la date donnée


Aye-Aye
WRInaute accro
WRInaute accro
 
Messages: 1910
Inscription: Ven Avr 15, 2005 8:52

Message le Lun Juin 02, 2008 14:49

cyberlahy a écrit:Je pense plutôt par une 3è table

News(id_news, titre, contenu, date)
Utilisateurs(id_utilisateurs, nom_utilisateur, email_utilisateur, ville_utilisateur)
News_Utilisateurs(id, id_news, id_utilisateurs, date)

Dont la news que l'utilisateur a publié pour la date donnée


Deux tables suffisent si la news a été publiée par un utilisateur et un seul.

Une troisième table sera utile en cas de publication collective possible d'un news (donc par plusieurs utilisateurs) à des dates diverses...
Mais dans ce cas et uniquement dans ce cas, le champ date n'a plus à figurer dans la table News, non ?
Enfin, il doit être possible de concaténer id_news et id_utilisateurs pour former la clé primaire de la 3ème table News_Utilisateurs qui recense la participation d'un rédacteur à un article.

Le tout est de bien préciser la situation et de définir ce que l'on entend par 'date' par exemple... et je dois dire que je ne suis pas trés sur de voir qui fait quoi dans ce cas de figure... :roll:


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités