2009-07-02 4 views
0

Enfoncé dans la syntaxe mySQL et les problèmes de structure de requête une fois de plus. Je fais actuellement cette requête bien: -mySQL - Utilisation des données d'un autre tableau.field pour déterminer les résultats d'une requête

SELECT DATE_FORMAT(`when`, '%e/%c/%Y')date 
    , COUNT(`ip`) AddressCount 
    FROM `metrics` 
WHERE `projID` = '$projID' 
GROUP BY DATE(`when`) 

Cela fonctionne très bien pour trouver le nombre spécifique de hit de l'adresse IP. Cependant, ce que j'essaye maintenant de faire est de donner un global, pour tous les projets d'un utilisateur. Mais, cette table ne contient pas l'ID d'un utilisateur, la table des projets le fait. Ils sont liés par un «projID». Donc, ce que je demande, c'est comment je peux lier les deux pour obtenir un résultat.

I.e. SELECT the bumph I want DE metrics O ((UNE AUTRE TABLE) userID = '1' ou, O WH les ID de projet sont répertoriés dans la table des projets. à côté de l'ID utilisateur.

Maintenant, une jointure directe ne semble pas être ma réponse? Je suis perplexe par les jointures en premier lieu. Toute aide appréciée.

Répondre

1

Vous voulez une jointure ici. Je ne vais pas obtenir ce droit à 100% parce que je ne connais pas les noms de vos colonnes, mais voici un coup de poignard.

Il serait utile que vous publiez plus d'informations sur vos deux tables et leurs colonnes.

SELECT DATE_FORMAT(m.`when`, '%e/%c/%Y')date 
    , COUNT(`ip`) AddressCount 
    , o.`userID` 
    FROM `metrics` m 
    LEFT JOIN `other_table` o 
    ON m.`userID` = o.`userID` -- you'll likely need to change this bit 
WHERE `projID` = '$projID' 
    AND o.`userID` = [Value] -- optional 
GROUP BY DATE(`when`) 
1

Il suffit de les rejoindre? Comme dans:

SELECT DATE_FORMAT(`when`, '%e/%c/%Y')date 
    , COUNT(`ip`) AddressCount 
    FROM `metrics`, project_user_association_table puat 
WHERE `projID` = puat.projId 
    AND puat.userId = 123456789 
GROUP BY DATE(`when`) 

Cette utilisation d'un project_user_accociation de table qui a un champ pour l'utilisateur et projet (si l'utilisateur à des projets est beaucoup à beaucoup dans mon exemple)

Questions connexes