Je reviens pour vous dire que j'ai trouvé d'où provenait mon problème. Il m'a suffit de modifier un mot de la VIEW pour que les requêtes d'update puissent s'effectuer comme elles auraient du :
CREATE OR REPLACE
ALGORITHM = MERGE
VIEW V_Animal_details
AS SELECT Animal.id, Animal.sexe, Animal.date_naissance, Animal.nom, Animal.commentaires,
Animal.espece_id, Animal.race_id, Animal.mere_id, Animal.pere_id, Animal.disponible,
Espece.nom_courant AS espece_nom, Race.nom AS race_nom
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
INNER JOIN Race ON Animal.race_id = Race.id;
J'ai remplacé le LEFT JOIN par un INNER JOIN malheureusement maintenant la VIEW ne récupère plus toutes les données qu'elle aurai du récupérer.
Après avoir parcouru le forum dédié au cours, je n'ai pas trouvé de réponse à mes questions.
Je suis coincé à l'activité_partie 2 : créer d'un site de blog basique.
Dans un premier temps j'ai d'abord voulu donner un nom "x" à la base de donnée pour préparer l'exercice en passant d'abord par l'invite de commande avec l'utilisateur root, j'ai donné les droit d'utilisation de cette bdd via mon nom d'utilisateur que j'avais créé afin de bosser depuis "mySql command line".
Dans un second temps, une fois connecté, j'ai importé le fichier ptp1_depart qui importe si je ne me trompe pas, une base de données ainsi que les tables "categorie" et "categorie_article".
Du coup je nage un peu car lorsque j'utilise la base de données importée et que je lance la requête suivante :
SELECT * FROM Categorie;
il me dit que c'est vide.
Est-ce une mauvaise manip de ma part, une incompréhension ou la base de données est-elle vide ?
Enfin, dans l'énoncé de l'exercice, il est précisé que "les requêtes de création de la base de données" nous sont fournies, cependant, je ne vois pas comment y accéder ou je ne les trouve tout simplement pas.
Merci de m'éclairer car je n'arrive vraiment plus à avancer
- Edité par Maxormarcus 10 janvier 2018 à 12:01:20
Le script SQL fourni n'assure que la création des tables ...
Voici le fameux fichier :
CREATE DATABASE p2p_blog CHARACTER SET 'utf8';
USE p2p_blog;
CREATE TABLE Categorie (
id INT UNSIGNED AUTO_INCREMENT,
nom VARCHAR(150) NOT NULL,
description TEXT NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE Categorie_article (
categorie_id INT UNSIGNED,
article_id INT UNSIGNED,
PRIMARY KEY (categorie_id, article_id)
);
Sans méchanceté, je pense qu'à ce niveau du cours tu aurais pu ouvrir le fichier en question et te rendre compte qu'il ne contient que trois commandes : la création de la base , et deux créations de table ... pas de commande INSERT INTO pour alimenter ces tables ...
Me voilà rassuré, disons que j'ai grossièrement oublié que je pouvais d'abord ouvrir le fichier via un éditeur de texte avant de l'importer directement .
Bon, y'a plus qu'à
- Edité par Maxormarcus 10 janvier 2018 à 17:41:03
Je reviens sur ce cours après quelque mois d'interruption. Je revois les parties que j'avais déjà faites pour me les remémorer avant de finir avec les parties qu'il me restait à voir .
J'avais déjà fais les activités des parties 2 et 4 .J'ai bien sûr conservé mon travail mais je n'ai plus accès à l'énoncé et s'est gênant et problématique pour revenir sur ce travail.
Y a t-il un moyen de consulter les énoncés des TP déjà réalisés ?
Je bloque sur un truc. Pour la première requête, on nous demande "le nombre de commentaires liés à ces articles". Et là ça coince (euh ... au sens propre - ce n'est pas le cas de le dire). Tout le reste de la requête fonctionne parfaitement.
Voici ce qui fonctionne très bien:
SELECT DATE_FORMAT(Article.date_publication, '%d/%m/%Y') AS datepublication,
Article.titre, Article.resume,
Utilisateur.pseudo
FROM Article
INNER JOIN Utilisateur ON Article.auteur_id = Utilisateur.id
ORDER BY Article.date_publication DESC
Pour le comptage des commentaires, je voyais quelque chose comme ça
SELECT COUNT(*) AS nb_commentaires
FROM Commentaire
INNER JOIN Article ON Article.id = Commentaire.article_id
On nous demande faire une seule requête. Or, je ne vois pas comment m'en dépatouiller. J'ai pensé à diverses possibilités: sous-requête, union de plusieurs requêtes, bref je ne vois pas comment faire. Auriez-vous une piste pour m'orienter svp ? Merci
Dans la première partie du cours plus particulièrement le chapitre sur l'insertion des données :
en executant ces commandes :
LOAD DATA LOCAL INFILE 'animal.csv'
INTO TABLE Animal
FIELDS TERMINATED BY ';' ENCLOSED BY '"'
LINES TERMINATED BY '\n' -- ou '\r\n' selon l'ordinateur et le programme utilisés pour créer le fichier
(espece, sexe, date_naissance, nom, commentaires);
j'arrive au résultat suivant :
l'insertion correspond à partir du tirer rouge comme vous pouvez le voir il y a des colonnes qui n'ont pas été inserer pour toute les lignes et je comprends pas pourquoi et en plus on dirait que c'est un peux aléatoire ...
Dans la première partie du cours plus particulièrement le chapitre sur l'insertion des données :
en executant ces commandes :
LOAD DATA LOCAL INFILE 'animal.csv'
INTO TABLE Animal
FIELDS TERMINATED BY ';' ENCLOSED BY '"'
LINES TERMINATED BY '\n' -- ou '\r\n' selon l'ordinateur et le programme utilisés pour créer le fichier
(espece, sexe, date_naissance, nom, commentaires);
J'ai une petite question concernant les exercices sur 'les calculs des données temporelles', dans l'exercice 5, j'avais pris en critère WHERE les id des deux animaux en question dans le bon ordre mais la résultat est NULL et je n'arrive pas à comprendre pourquoi (c'est surement tout bête) si quelqu'un pouvait m'éclairer ça m'aiderait bien. Merci !
Rouquine, Zira, Bouli et Balou (id 13, 18, 20 et 22 respectivement) font partie de la même portée. Calculer combien de temps, en minutes, Balou est né avant Zira.
SELECT TIMESTAMPDIFF(MINUTE,
(SELECT date_naissance
FROM Animal
WHERE nom = 'Balou'),
(SELECT date_naissance
FROM Animal
WHERE nom = 'Zira'))
AS nb_minutes;
Alors, ça vient surement de moi mais en revérifiant, c'est l'id 20 qui est = à Balou et non 22 mais ce n'est pas ça le problème, en fait en refaisant ce matin l'exercice, plus de NULL...que ce soit avec les id, les noms, les autres id, ça fonctionne...Du coup je ne sais pas quelle erreur j'ai fait hier mais je devais être fatigué lol. Merci !
Ce nombre indique la prochaine valeur de la colonne déclarée comme clé primaire (primary) qui sera créée automatiquement lorsque tu insèreras dans la table Machin.
technicien systèmes et réseaux