2 requetes en une seule

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : 2 requetes en une seule

Re: 2 requetes en une seule

par rimie1 » 04 avr. 2011, 04:03

C'est pour ne sélectionner que les chansons n°1
Et si j'utilise le code en PHP je vais pas la mettre parce que je vais recuperer les id et ca va s'arretter ici:
SELECT albums.ida, chansons . * FROM chansons, albums WHERE chansons.ida1 = albums.ida
avec du GET[ida] j'aurais biensur 1 ou 2,...
C'est pour dire que tu veux sélectionner tous les champs de la table "Chansons".
On les separe par un point ?

Re: 2 requetes en une seule

par sadeq » 03 avr. 2011, 14:39

bonjour,
ca marche bien merci, et pourquoi on a ajoute AND chansons.ida1 = 1
SELECT albums.ida, chansons . * FROM chansons, albums WHERE chansons.ida1 = albums.ida AND chansons.ida1 = 1
sadeq: j'ai compris votre exemple, mais pour la requete ci-dessus, il y a une complixite a partir de ".* FROM", pourquoi le point?
Bonjour,

Pour la question "Pourquoi AND chansons.ida1 = 1?" : C'est pour ne sélectionner que les chansons de l'album n°1 (celles que j'ai coloré en jaune) car la jointure retourne tous les ensembles de chansons ayant des albums ( c'est à dire toutes les chansons dans ton cas)

Pour la question sur "Pourquoi chansons.* dans la requête ? " : C'est pour dire que tu veux sélectionner tous les champs de la table "Chansons".

Re: 2 requetes en une seule

par rimie1 » 03 avr. 2011, 03:27

bonjour,
ca marche bien merci, et pourquoi on a ajoute AND chansons.ida1 = 1
SELECT albums.ida, chansons . * FROM chansons, albums WHERE chansons.ida1 = albums.ida AND chansons.ida1 = 1
sadeq: j'ai compris votre exemple, mais pour la requete ci-dessus, il y a une complixite a partir de ".* FROM", pourquoi le point?

Re: 2 requetes en une seule

par dunbar » 01 avr. 2011, 12:13

Faut pas enlever la jointure... Je pensais avoir été clair.
SELECT albums.ida, chansons . * FROM chansons, albums WHERE chansons.ida1 = albums.ida AND chansons.ida1 = 1
Et pas de quote autour du 1 car ida1 est de type entier dans ta table.
Autant pour :oops: moi

Re: 2 requetes en une seule

par sadeq » 01 avr. 2011, 09:39

Bonjour,

Effectivement, les jointures entre les tables d'une base de données sont importantes quand les tables sont en relation, et il est obligatoire de les rappeler dans les requêtes SQL. Je rappelle qu'une jointure est l'association entre une clé primaire d'une première table et une clé étrangère se trouvant dans une deuxième table et qui est le "sosie" typique de la clé primaire.

La jointure naturelle (égalité entre clé primaire et étrangère) permet à elle seule de sélectionner les enregistrements qui forment l'intersection entre la table de la clé primaire et celle de la clé étrangère. Voici un exemple partant de ton schéma de base de données:
Image

Re: 2 requetes en une seule

par xTG » 01 avr. 2011, 08:34

Faut pas enlever la jointure... Je pensais avoir été clair.
SELECT albums.ida, chansons . * FROM chansons, albums WHERE chansons.ida1 = albums.ida AND chansons.ida1 = 1
Et pas de quote autour du 1 car ida1 est de type entier dans ta table.

D'ailleurs je ne m'explique même pas comment tu as pu avoir un résultat sur ta dernière requête... Il aurait du te renvoyer une belle erreur en indiquant qu'il ne pouvait choisir le albums.ida sans plus de précision.

Re: 2 requetes en une seule

par rimie1 » 01 avr. 2011, 07:55

J'ai essaye comme ca:
SELECT albums.ida, chansons . * FROM chansons, albums WHERE chansons.ida1 = '1'
ca me donne:

Code : Tout sélectionner

chanson1 chanson1 chanson2 chanson2 chanson3 chanson3

Re: 2 requetes en une seule

par dunbar » 31 mars 2011, 15:27

Salut,

Logique tu ne lui donne pas un numéro spécifique d'albums
Sur phpmyadmin j'ai mis un chiffre au lieu de ida et ida1 mais il ne l'accepte pas
a tu essayer comme ceci = '1' et pas = 1

Re: 2 requetes en une seule

par xTG » 31 mars 2011, 08:06

C'est la jointure que tu as touché, c'est mal ! :P
Il faut rajouter une condition avec un ET pour spécifier l'id.

Re: 2 requetes en une seule

par rimie1 » 31 mars 2011, 03:42

Salut,

Logique tu ne lui donne pas un numéro spécifique d'albums
Sur phpmyadmin j'ai mis un chiffre au lieu de ida et ida1 mais il ne l'accepte pas

Re: 2 requetes en une seule

par dunbar » 30 mars 2011, 16:20

Salut,

Logique tu ne lui donne pas un numéro spécifique d'albums

Re: 2 requetes en une seule

par rimie1 » 30 mars 2011, 10:53

voila les 2 tables ainsi que la requete, il me donne toutes les donnees dans la table chansons:
CREATE TABLE IF NOT EXISTS `albums` (
  `ida` int(2) NOT NULL auto_increment,
  `noma` varchar(200) collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`ida`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

--
-- Dumping data for table `albums`
--

INSERT INTO `albums` (`ida`, `noma`) VALUES
(1, 'album1'),
(2, 'album2');

CREATE TABLE IF NOT EXISTS `chansons` (
  `idc` int(2) NOT NULL auto_increment,
  `ida1` int(2) NOT NULL,
  `nomc` varchar(200) collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`idc`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;

--
-- Dumping data for table `chansons`
--

INSERT INTO `chansons` (`idc`, `ida1`, `nomc`) VALUES
(1, 1, 'chanson1'),
(2, 1, 'chanson2'),
(3, 1, 'chanson3'),
(4, 2, 'chanson4');
et la requete:
SELECT albums.ida, chansons.* FROM chansons, albums WHERE chansons.ida1 = albums.ida
resultat, toutes les lignes de chansons:

Showing rows 0 - 3 (4 total, Query took 0.0008 sec)

Re: 2 requetes en une seule

par dunbar » 25 mars 2011, 15:38

Salut,

Essaye comme ceci ??
SELECT albums.id, chanson.* FROM chanson, albums  WHERE chanson.ida = albums.id AND albums.id= x

Re: 2 requetes en une seule

par rimie1 » 24 mars 2011, 14:35

j'ai trouve ce tuto et je ne sais pas laquelle correspond a mon exemple, je suis debutante en SQL

Re: 2 requetes en une seule

par xTG » 24 mars 2011, 09:03

Cela s'appelle les jointures ce que tu demandes. ;)
Renseignes toi sur le mot clé JOIN.