Requete sql faire une sous requete
Fermé
momohuri
Messages postés
235
Date d'inscription
lundi 6 juillet 2009
Statut
Membre
Dernière intervention
9 février 2012
-
16 sept. 2011 à 14:45
momohuri Messages postés 235 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 9 février 2012 - 16 sept. 2011 à 16:33
momohuri Messages postés 235 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 9 février 2012 - 16 sept. 2011 à 16:33
A voir également:
- Requete sql faire une sous requete
- Sql (+) - Forum Programmation
- La requête graphql n’est pas autorisée facebook - Forum Facebook
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- Requête sql doublons sur 2 champs ✓ - Forum Programmation
- Lister les tables d'une base sql ✓ - Forum Programmation
2 réponses
Utilisateur anonyme
16 sept. 2011 à 15:20
16 sept. 2011 à 15:20
Bonjour,
Ce genre de syntaxe en SQL n'est pas possible.
Une sous requête doit renvoyer une seule colonne.
Il faudrait travailler ainsi
select
...
from matable, amis
where
amis.id = 1
matable.visibilite=1
and
(
(matable.idcreateur=amis.idamis1)
or
(matable.idcreateur=amis.idamis2)
...
)
Mais je pense que c'est plus du à une erreur de conception de la base
la table amis devrait être du genre
id1, id2
ou id1 est l'amis de id2
du genre
1,2
1,3
1,4
2,3
2,4
....
Ce genre de syntaxe en SQL n'est pas possible.
Une sous requête doit renvoyer une seule colonne.
Il faudrait travailler ainsi
select
...
from matable, amis
where
amis.id = 1
matable.visibilite=1
and
(
(matable.idcreateur=amis.idamis1)
or
(matable.idcreateur=amis.idamis2)
...
)
Mais je pense que c'est plus du à une erreur de conception de la base
la table amis devrait être du genre
id1, id2
ou id1 est l'amis de id2
du genre
1,2
1,3
1,4
2,3
2,4
....
momohuri
Messages postés
235
Date d'inscription
lundi 6 juillet 2009
Statut
Membre
Dernière intervention
9 février 2012
8
Modifié par momohuri le 16/09/2011 à 15:31
Modifié par momohuri le 16/09/2011 à 15:31
pour la table je pourrait faire ce que tu dit aussi mais dans ce cas la ca veut dire qu on arrive a nbrdegens *nbrdamis avec 2 colone pour chaque pour le nbr de ligne.
Donc pour 1000 personne qui sont amis entre elle on arrive a 200 000 champ
Or avec ma methode on est a nbrdegens avec x colones(mis a 100 pour le moment)
donc 100 000 pour ma methode
et plus il y a des gens plus ta méthode fait une exponentielle.
c est vraiment mieux de faire plein de ligne plutot que plein de colone?
Donc pour 1000 personne qui sont amis entre elle on arrive a 200 000 champ
Or avec ma methode on est a nbrdegens avec x colones(mis a 100 pour le moment)
donc 100 000 pour ma methode
et plus il y a des gens plus ta méthode fait une exponentielle.
c est vraiment mieux de faire plein de ligne plutot que plein de colone?
En SQL on ne multiplie pas les colonnes, c'est une règle d'or
Le nombre de ligne importe, mais si les indexes sont bien placés...
Et puis avec ton système, on est fatalement limité à un certain nombre d'amis, pas ans le mien.
De plus il y aura un peu moins de lignes :
si 1 est amis avec 2, inutile de préciser que 2 est amis avec 1, on le sait
Après tu fais comme tu veux.
Le nombre de ligne importe, mais si les indexes sont bien placés...
Et puis avec ton système, on est fatalement limité à un certain nombre d'amis, pas ans le mien.
De plus il y aura un peu moins de lignes :
si 1 est amis avec 2, inutile de préciser que 2 est amis avec 1, on le sait
Après tu fais comme tu veux.
momohuri
Messages postés
235
Date d'inscription
lundi 6 juillet 2009
Statut
Membre
Dernière intervention
9 février 2012
8
16 sept. 2011 à 15:45
16 sept. 2011 à 15:45
ca marche merci pour cette petit aide
momohuri
Messages postés
235
Date d'inscription
lundi 6 juillet 2009
Statut
Membre
Dernière intervention
9 février 2012
8
16 sept. 2011 à 16:03
16 sept. 2011 à 16:03
ca marche, au passage tu a parle d indexes, je fait ca comment ?^^
Tu ne sais pas gérer les indexes ???
Alors avant toute chose, avant de te lancer dans la programmation SQL,
il va te falloir ouvrir un livre sur le sujet, ou trouver un bon cours, désolé d'être aussi direct.
Les indexes sont les nerfs de la base de données, sans index, toute tes requêtes vont patiner. Un index permet d'accéder rapidement (données triées) à un enregistrement, sans indexe, le système est obligé de parcourir presque tous les enregistrements, imagine, je bosse avec tables de plus de huit millions d'enregistrements sous Oracle alors...
Pour créer un indexe la commande SQL est
create index nom_index on nom_table (nom_champ_concerne,.....)
Mais il y des indexes primaires, secondaires (clefs)
Avant de créer des indexes, il faut bien comprendre quel champ servira principalement dans les requêtes, bref faire une analyse au préalable, en fait c'est un métier 8-)
Alors avant toute chose, avant de te lancer dans la programmation SQL,
il va te falloir ouvrir un livre sur le sujet, ou trouver un bon cours, désolé d'être aussi direct.
Les indexes sont les nerfs de la base de données, sans index, toute tes requêtes vont patiner. Un index permet d'accéder rapidement (données triées) à un enregistrement, sans indexe, le système est obligé de parcourir presque tous les enregistrements, imagine, je bosse avec tables de plus de huit millions d'enregistrements sous Oracle alors...
Pour créer un indexe la commande SQL est
create index nom_index on nom_table (nom_champ_concerne,.....)
Mais il y des indexes primaires, secondaires (clefs)
Avant de créer des indexes, il faut bien comprendre quel champ servira principalement dans les requêtes, bref faire une analyse au préalable, en fait c'est un métier 8-)