J'ai une situation étrange. Je n'ai pas encore trouvé de solution. J'ai essayé d'utiliser diverses jointures et sous-requêtes, donc je demande un peu d'aide. J'utilise MySQLi et PHP 7.MySQL Pull Tous les enregistrements avec le numéro de la jointure
J'ai deux tables. Une table (appelée table) contient une liste de personnes. L'autre table contient un journal des données que la personne a effectuées, appelées rapports.
Je suis en mesure de sélectionner tous les enregistrements clairement de chaque table sans problème. Je suis capable d'utiliser une instruction join pour tirer uniquement les enregistrements qui sont dans les deux tables
Ce que j'essaie d'accomplir est une requête qui va tirer tous les enregistrements, mais aussi joindre les données de la table de rapports tout en montrant seulement le LATEST joint l'enregistrement des rapports, le cas échéant.
Un exemple du travail de jointure:
select * from table
join reports on (table.ID = reports.ID)
join contacts on (reports.cID = contacts.cID)
where date(reports.dTime) = date(curdate()) and reports.Method = $methodID
Un exemple de la requête modifiée qui ne fonctionne pas. Je comprends que je peux besoin d'utiliser un sous-requête comme ma logique était erronée et ou ne fonctionne pas comment je pensais que ce serait
select * from table
join reports on (table.ID = reports.ID)
join contacts on (reports.cID = contacts.cID)
where date(reports.dTime) = date(curdate()) and reports.Method = $methodID OR table.Method = $method
J'ai essayé d'utiliser LEFT OUTER JOIN selon la documentation MySQL, mais ne peut pas semblent l'obtenir pour inclure tous les enregistrements de la table et toutes les données possibles des rapports.
select * from table
left outer join reports on (table.ID = reports.ID)
where date(reports.dTime) = date(curdate()) and reports.Method = $methodID
Y at-il quelque chose que je fais mal? ou est ma prise sur Joins manquant?
Nous vous remercions de votre aide.
Edit - Je viens de réaliser que je ne peux le genre ou l'ordre par les temps de rapport ou méthode, parce que ceux qui ne peuvent pas exister, je ne ai pas besoin la possibilité de trier dans cette requête. peut-être commander par table.timestamp à la place.
Edit 2 - Ajout d'un exemple de résultats attendus:
table
-------------------------------------
firstName | last Name | cID | dTime
-------------------------------------
Jane | Doe | 312 | 10:30am
John | Doe | 318 | 10:35am
Adam | Doe | |
Berry | Doe | |
Charlie | Doe | |
Le tableau de table contient diverses données sur la personne comme le nom, l'âge, etc. la table de contacts ne contient que l'ID de contact (cid) et les contacts prénom et nom. La table de rapports contient le dTime, et un cid pour ce dTime qui correspond au ContactID dans la table de contacts. Les ID de contact sont uniques.
Il est encore un peu difficile de savoir ce que vous essayez d'atteindre. Si vous pouvez ajouter quelques exemples de données et le résultat attendu qui serait utile. Cela ressemble à un LEFT JOIN est ce que vous avez besoin, ce qui vous donnera toutes les lignes de table, plus toute information disponible à partir des tables jointes –
Je vais le faire - édition maintenant –
@ i-man J'ai modifié la question comme demandé –