SQL : Rechercher une valeur dans plusieurs champs
FerméTessel75 - 28 août 2022 à 15:27
- SQL : Rechercher une valeur dans plusieurs champs
- Sql server recovery - Télécharger - Gestion de données
- Logiciel sql - Télécharger - Bases de données
- Sql pix - Forum Python
- Dupliquer une table sql ✓ - Forum Programmation
- Sql commence par ✓ - Forum Webmastering
4 réponses
26 août 2022 à 18:40
Bonjour
Bonjour
Tu peux écrire une requête contenant plusieurs conditions séparées par le mot clé or.
26 août 2022 à 18:57
J'y ai bien pensé mais j'étais sûr qu'il existait un truc plus propre, parce-que là ça fait 8 x OR.... !
27 août 2022 à 11:36
bonjour,
Si tu veux faire plus propre, il faut peut-être remettre en cause la structure de tes tables.
Modifié le 28 août 2022 à 09:00
Oui, j'y ai pensé mais je ne vois pas bien comment ?
La première table "menus" contient : id_menu, nom, et notes
La deuxième table "menu_composition" contient l'id_menu comme lien entre les deux tables et les id_recettes des plats servis en entree, plat et dessert sur les 2 repas de la journée... avec pour chaque repas le nombre de convives. (cf image postée dans ma question initiale).
On ne peut pas faire plus simple, à moins de n'en faire qu'une avec une redondance du nom et notes ?
28 août 2022 à 09:19
La définition des tables ne doit pas être "simple". Elle doit permettre de les utiliser correctement, et, si possible, simplement. Tu as fait une construction simple qui conduit à une utilisation complexe.
Je ne peux pas faire de suggestion sans que tu décrives de quoi il s'agit, et ce que tu fais avec les données.
La composition du menu inclut des dates et des quantités, je trouve cela bizarre. La composition du menu change chaque jour?
28 août 2022 à 10:50
Tu as construit ta table en fonction du rapport à produire, comme tu ferais dans Excel.
Au lieu de supprimer une recette, pourquoi ne pas la marquer comme "non disponible"?
28 août 2022 à 14:10
Comme le but est de sortir une liste de courses et un planning pour un weekend, les informations dans les tables menus, menus_composition (et d'autres tables qui n'existent pas encores comme courses par ex) sont appelées à être supprimées régulièrement.... aucun intérêt en effet de les conserver.
Par contre il n'en est pas de même pour les aliments et les recettes. Je pourrais ne pas programmer de suppression de recettes et économiser ainsi une requête tordue, mais je voulais éviter de passer par phpmyadmin pour virer une recette doublon ou une qu'on déciderait de ne plus faire pour x raison
26 août 2022 à 19:06
Un truc comme ça ?
SELECT recettes.*,( SELECT Count(*) FROM menus_composition AS M WHERE M.midi_entree = recettes.id_recette OR M.midi_plat = recettes.id_recette OR M.midi_dessert = recettes.id_recette OR M.midi_autre = recettes.id_recette OR M.soir_entree = recettes.id_recette OR M.soir_plat = recettes.id_recette OR M.soir_dessert = recettes.id_recette OR M.soir_autre = recettes.id_recette ) AS Nb_menus FROM recettes ORDER BY type
Bonjour,
Comme le dit très bien YeBe, la question n'est pas d'avoir des tables simples, ni même d'avoir des liaisons simples, mais d'avoir des tables qui permettent de limiter au maximum la saisie de données nouvelles.
Ainsi de ce que j'ai compris de ton exposé, je ferais comme suit avec les champs indiqués :
Table Repas = > [IdRepas], [Date], [Heure (Midi/Soir)],
Table Menus= > [IdMenus], [IdmPlats],
Table Plats= > [IdPlats], [Recette],
Table RepasMenus = > [IdrmRepas],[IdrmMenus], [Quantité], Avec [IdrmRepas]=[IdRepas] et [IdrmMenus] = [IdMenus] , cette table te permet d'enregistrer facilement les quantités servies de chacun des menus, chaque jour et pour chacun des repas midi et soir, et en même temps peut te servir à rebours pour savoir quand a été servis tel ou tel menu, et combien
ou bien Table RepasPlats= > [IdrpRepas],[IdrpPlats], [Quantité], Avec [IdrpRepas]=[IdRepas] et [IdrpPlats] = [IdPlats] , qui te permet d'enregistrer facilement les quantités servies de chacun des plats, chaque jour et pour chacun des repas midi et soir, et en même temps peut te servir à rebours pour savoir quand a été servis tel ou tel plat et combien
Ainsi, quand tu veux savoir quand et combien de tel ou tel plat a été servi, il suffit d'appeler le plat et la recette choisie et de lui faire cracher soit la quantité soit les dates et le moment, midi ou soir.
Bon courage. je répète : la question n'est pas d'avoir des tables simples, ni même d'avoir des liaisons simples, mais d'avoir des tables qui permettent de limiter au maximum la saisie de données nouvelles pour pouvoir en extraire les données qu'on veut obtenir.