Je veux rejoindre 2 tables. Celle-ci contient les utilisateurs et les autres rendez-vous - la table des rendez-vous contient 3 colonnes (ApID, qui est la clé primaire), bookFrom, bookedFor - ces 2 dernières colonnes référencent la table des utilisateurs et je pense que self_explanatory est facile à comprendre. Voici les tables en détail:Message d'erreur MySQL, code d'erreur 1064, LIMIT 20 OFFSET 0
CREATE TABLE `users` (
`user_ID` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`lastname` varchar(45) NOT NULL,
`email` varchar(255) DEFAULT NULL,
`password` varchar(100) DEFAULT NULL,
`hash` varchar(32) DEFAULT NULL,
`usertype` enum('1','2','3','4') DEFAULT NULL,
PRIMARY KEY (`user_ID`),
KEY `fk_users_usertype1_idx` (`usertype`),
CONSTRAINT `fk_users_usertype1` FOREIGN KEY (`usertype`) REFERENCES `usertype` (`type_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
CREATE TABLE `appointments` (
`apID` int(11) NOT NULL AUTO_INCREMENT,
`Bookfrom` int(11) ,
`bookedfor` int(11) ,
PRIMARY KEY (`apID`),
KEY `fk_appointments_user1_idx` (`Bookfrom`),
KEY `bokkedfor` (`bookedfor`),
CONSTRAINT `appointments_ibfk_3` FOREIGN KEY (`bookedfor`) REFERENCES `users` (`user_ID`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `appointments_ibfk_2` FOREIGN KEY (`Bookfrom`) REFERENCES `users` (`user_ID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
Ce que je suis en train de trouver est si un utilisateur spécifique (que l'utilisateur dispose d'un e-mail de [email protected]) est indiqué dans le tableau des nominations (sens a réservé une rendez-vous) et je suis en train de faire avec cette déclaration:
select appointments.Bookfrom,appointments.Bookedfor
from appointments,users
where users.email='[email protected]'
and appointments.Bookfrom=users.user_ID,
appointments.Bookedfor=users.user_ID;
Mais je reçois le message suivant:
code d'erreur 1064, état SQL 42000: Vous avez une erreur dans votre SQL syntaxe; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près « appointments.Bookedfor = utilisateurs.id_utilisateur 20 LIMITE OFFSET 0 » à la ligne 4
On peut se demander pourquoi 2 colonnes bookedfrom et bookedfor . La raison en est que dans la table des utilisateurs il y a 2 types d'utilisateurs, business et utilisateurs réguliers, donc la logique est un utilisateur régulier qui réserve un rendez-vous pour un business.I ne suis pas sûr que ce soit le bon design db pour l'occasion mais est une discussion différente
Il y a une autre question que je voudrais faire par rapport à la requête ci-dessus cependant. La requête ci-dessus renvoie 2 colonnes. Il recherche l'utilisateur avec l'email ci-dessus dans 2 colonnes. Il est possible en utilisant la même requête (et un certain code php) d'apprendre EXACTEMENT dans quelle colonne (bookfrom ou bookedfor) l'utilisateur ci-dessus apparaît? Ou dois-je écrire deux requêtes pour une telle tâche? –