Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1014 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Auteur Sujet :

SQL, : Je n'arrive pas à formuler la requète qui va bien...

n°331560
MagicBuzz
Posté le 12-03-2003 à 23:05:16  profilanswer
 

Reprise du message précédent :
ça on savait déjà :D

mood
Publicité
Posté le 12-03-2003 à 23:05:16  profilanswer
 

n°331562
mrbebert
Posté le 12-03-2003 à 23:06:30  profilanswer
 

ZeBorG a écrit :

et comme vous pouvez le voir sur mon 4ieme test, le sum() ne marche pas :
http://wanab.free.fr/test/test.php

oui, c'est pas un sum(value), c'est un ???(txt) , la fameuse fonction qu'on aimerait bien avoir (c'est la faute au copier-coller j'y suis pour rien :whistle: )

n°331567
Mara's dad
Yes I can !
Posté le 12-03-2003 à 23:07:04  profilanswer
 

MagicBuzz a écrit :

Bon, après y'a impossible et impossible...
 
Normalement, il est impossible de compter le nombre d'occurences d'un mot dans un champ.
 
Vous avez 10 minutes pour trouver une solution pour le faire (bon, j'ai un peu galèré 2 heures dessus le mois dernier avant d'avoir l'illumination ;))


 
Je vois pas le rapport avec la concaténations :??:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°331568
MagicBuzz
Posté le 12-03-2003 à 23:07:23  profilanswer
 

Mara's dad > aucun, le rapport se situe au niveau de l'impossibilité téhorique :D


Message édité par MagicBuzz le 12-03-2003 à 23:07:41
n°331575
Mara's dad
Yes I can !
Posté le 12-03-2003 à 23:09:13  profilanswer
 

MagicBuzz a écrit :

Mara's dad > aucun, le rapport se situe au niveau de l'impossibilité téhorique :D


Ok, mais alors c'est quoi ta question ?
J'suis perdu là !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°331577
MagicBuzz
Posté le 12-03-2003 à 23:10:08  profilanswer
 

compter le nombre d'occurences d'un mot dans un champ, pour un moteur de recherche par exemple
 
sans passer par une PS bien entendu


Message édité par MagicBuzz le 12-03-2003 à 23:10:42
n°331585
MagicBuzz
Posté le 12-03-2003 à 23:14:08  profilanswer
 

arf, en fait chais même pu comment j'avais fait :lol: :D

n°331591
MagicBuzz
Posté le 12-03-2003 à 23:15:43  profilanswer
 

En fait, je crois que j'avais trouvé que pour compter des lettres :)

n°331600
mrbebert
Posté le 12-03-2003 à 23:17:54  profilanswer
 

Et tu faisais ca comment ?

n°331609
Mara's dad
Yes I can !
Posté le 12-03-2003 à 23:21:11  profilanswer
 

Ben en tout cas, c'est intéressant comme chalenge !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
mood
Publicité
Posté le 12-03-2003 à 23:21:11  profilanswer
 

n°331622
MagicBuzz
Posté le 12-03-2003 à 23:25:57  profilanswer
 

Ben fait, je remplaçais les lettres trouvées par des "1", et le reste par rien du tout.
 
J'avais ensuite un nombe écrit au format binaire qu'il fallait incrémenter de 1, et lui faisant un pow de je sais plus quoi et on retrouvais le nombre de lettres trouvées :D
 
Mais sans Oracle sous la main c pas évident :)


Message édité par MagicBuzz le 12-03-2003 à 23:26:29
n°331704
ZeBorG
Yes we can!
Posté le 12-03-2003 à 23:55:29  profilanswer
 

Autre dilemme :
Je souhaite récupérer tout les élève qui n'ont pas une cetaine remarque.
Le problème est que si je fait :
SELECT nom
FROM eleve AS e LEFT JOIN remarques AS r ON r.id=e.id
WHERE rem!='bla1'
 
toto sera quand même affiché malgré le fait qu'il est bla1 car il as la remarque bla2

n°331729
skylight
Made in France.
Posté le 13-03-2003 à 00:01:34  profilanswer
 

SELECT nom  
FROM eleve AS e LEFT JOIN remarques AS r ON r.id=e.id
EXCEPT
SELECT nom  
FROM eleve AS e LEFT JOIN remarques AS r ON r.id=e.id  
WHERE rem='bla1' LIMIT 0,1;
 
 
je sais pas si ca marche pas contre, il est minuit, hein :D


Message édité par skylight le 13-03-2003 à 00:02:15
n°331735
ZeBorG
Yes we can!
Posté le 13-03-2003 à 00:04:38  profilanswer
 

ce serait plutôt :
SELECT DISTINCT nom  
FROM eleve
EXCEPT
SELECT DISTINCT nom  
FROM eleve AS e LEFT JOIN remarques AS r ON r.id=e.id  
WHERE rem='bla1';
 
 
Mais je ne suis pas sûr que EXCEPT soit dans MySQL.
Faut que je test...


Message édité par ZeBorG le 13-03-2003 à 00:05:04
n°331736
MagicBuzz
Posté le 13-03-2003 à 00:04:56  profilanswer
 

vire ton left join et ça marchera tout seul...
 
franchement, le left join, je dois m'en servir chaque fois qu'il me tombe un oeil, et j'ai toujours mes deux yeux d'origine alors à la base, tu devrais pas plus en eavoir besoin que moi ;)

n°331739
skylight
Made in France.
Posté le 13-03-2003 à 00:05:45  profilanswer
 

en tout cas, ca y est dans postgre.

n°331741
skylight
Made in France.
Posté le 13-03-2003 à 00:06:20  profilanswer
 

MagicBuzz a écrit :

vire ton left join et ça marchera tout seul...
 
franchement, le left join, je dois m'en servir chaque fois qu'il me tombe un oeil, et j'ai toujours mes deux yeux d'origine alors à la base, tu devrais pas plus en eavoir besoin que moi ;)

ahem, si tu voyais le code source de mon forum, tu serais [:toad666] :D

n°331743
ZeBorG
Yes we can!
Posté le 13-03-2003 à 00:06:56  profilanswer
 

parfois, le LEFT JOIN est très important (cf. plus haut...)

n°331746
MagicBuzz
Posté le 13-03-2003 à 00:07:58  profilanswer
 

vous pouvez pas faire des trucs simples ?
 
SELECT nom
FROM eleve, remarques
where remarques.id=e.id
and rem!='bla1'
union
SELECT nom
FROM eleve
where id not in (select id from remarques)
 
:heink:

n°331749
MagicBuzz
Posté le 13-03-2003 à 00:08:42  profilanswer
 

Skylight a écrit :

ahem, si tu voyais le code source de mon forum, tu serais [:toad666] :D


ben si ça t'amuse de multiplier tous les temps de requête par 10 c ton problème :D


Message édité par MagicBuzz le 13-03-2003 à 00:08:54
n°331750
skylight
Made in France.
Posté le 13-03-2003 à 00:09:29  profilanswer
 

MagicBuzz a écrit :

vous pouvez pas faire des trucs simples ?
 
SELECT nom
FROM eleve, remarques
where remarques.id=e.id
and rem!='bla1'
union
SELECT nom
FROM eleve
where id not in (select id from remarques)
 
:heink:


ca marche pas dans mysql
 
sinon on pouvait faire encore plus simple, en créant une vue auparavant, qui aurait servit aux 2 requetes

n°331751
skylight
Made in France.
Posté le 13-03-2003 à 00:09:52  profilanswer
 

MagicBuzz a écrit :


ben si ça t'amuse de multiplier tous les temps de requête par 10 c ton problème :D


 
parfois on a pas le choix ;)

n°331752
skylight
Made in France.
Posté le 13-03-2003 à 00:11:07  profilanswer
 

CREATE VIEW eleves_bla1
AS SELECT eleve
FROM eleves,remarques
WHERE eleves.id=remarques.id
AND remarques.rem = 'Bla1';
 
 
et apre, basta ...

n°331753
MagicBuzz
Posté le 13-03-2003 à 00:11:18  profilanswer
 

pkoi, ça marche pas le "in" ?
 
pffff... je comprends mieu pkoi vous faites autant de requêtes imbittables :/

n°331754
ZeBorG
Yes we can!
Posté le 13-03-2003 à 00:12:11  profilanswer
 

Avec MySQL  
 
where id not in (select id from remarques)
 
ne marche pas
 
par contre
 
where id not in (1, 2, 3)
 
marche...

n°331755
skylight
Made in France.
Posté le 13-03-2003 à 00:12:13  profilanswer
 

MagicBuzz a écrit :

pkoi, ça marche pas le "in" ?
 
pffff... je comprends mieu pkoi vous faites autant de requêtes imbittables :/


Non, c'est la sous requete qui n'est pas encore prise en compte dans MySQL ;) (enfin, depuis la 4.1, si, mais sinon non :D)

n°331757
MagicBuzz
Posté le 13-03-2003 à 00:13:19  profilanswer
 

y'a des fois, je me dis que les partisans de mysql sont vraiment des intégristes... et dire qu'il y a d'autres SGBD gratuits qui sont 10 fois plus puissants :/

n°331763
skylight
Made in France.
Posté le 13-03-2003 à 00:15:28  profilanswer
 

MagicBuzz a écrit :

y'a des fois, je me dis que les partisans de mysql sont vraiment des intégristes... et dire qu'il y a d'autres SGBD gratuits qui sont 10 fois plus puissants :/

je suis pas pro MySQL ;)
 
je touche a Mysql, postgresql, SQL server
 
chacune a ses avantages, pr mon forum j'ai privilégié mysql pr la rapidité, pr mes appli postgre ... enfin bref :D

n°331769
ZeBorG
Yes we can!
Posté le 13-03-2003 à 00:21:28  profilanswer
 

on va pas tourner ce topic en troll mySQL/postre/... SVP
 
je suis un peux rouillé sur les VIEW, qq peut m'aidé :)

n°331771
skylight
Made in France.
Posté le 13-03-2003 à 00:24:13  profilanswer
 

de toutes manieres les vues ne marchent pas sous mysql, apparement ce ke tu veux doit fonctionner sous mysql :??:

n°331777
ZeBorG
Yes we can!
Posté le 13-03-2003 à 00:28:44  profilanswer
 

oui, je suis coincé avec MySQL

n°331783
MagicBuzz
Posté le 13-03-2003 à 00:55:21  profilanswer
 

Bon, soyons fous ce soir, j'installe Oracle :)

n°331893
MagicBuzz
Posté le 13-03-2003 à 10:35:27  profilanswer
 

Arf, vive l'optimisation :)
 
En rouge et en vert, ça retourne EXACTEMENT la même chose.
Sauf que l'un est beaucoup plus lent ;)
 
select stkprep, stkresa, stkalloc, stkcpc, stkach, stkrecp, stkphys, stkcpc + stkach + stkrecp + stkphys resources,  
stkprep + stkresa + stkalloc + stkcpc needs,  
stkrecp + stkphys - stkprep - stkresa - stkalloc - stkcpc netResources,  
decode((abs(stkrecp + stkphys - stkprep - stkresa - stkalloc - stkcpc) - (stkrecp + stkphys - stkprep - stkresa - stkalloc - stkcpc)), 0, stkach, stkcpc + stkach + stkrecp + stkphys - stkprep - stkresa - stkalloc - stkcpc),
stkcpc + stkach + stkrecp + stkphys - abs(stkrecp + stkphys - stkprep - stkresa - stkalloc - stkcpc)
from bo_sup_conso
where invtyp in ('0', '3', '4', '5', 'N';)
and stkach + stkrecp + stkphys > stkprep + stkresa + stkalloc + stkcpc


Message édité par MagicBuzz le 13-03-2003 à 10:36:18
n°332351
ZeBorG
Yes we can!
Posté le 13-03-2003 à 18:04:59  profilanswer
 

Foulalala, tes noms de variables sont durs à lire. Tu devrais enlever tout les 'stk' redondant et nommer ta table stock_machin_chose à la place (remplacer 'machin_chose' par un term explicite...).

n°332413
mrbebert
Posté le 13-03-2003 à 19:31:10  profilanswer
 

ZeBorG a écrit :

Autre dilemme :
Je souhaite récupérer tout les élève qui n'ont pas une cetaine remarque.
Le problème est que si je fait :
SELECT nom
FROM eleve AS e LEFT JOIN remarques AS r ON r.id=e.id
WHERE rem!='bla1'
 
toto sera quand même affiché malgré le fait qu'il est bla1 car il as la remarque bla2

Ca peut se faire avec 2 jointures, l'une d'entre elles servant à récupérer l'id de l'élève qui a la remarque concernée :)

n°332431
MagicBuzz
Posté le 13-03-2003 à 19:52:44  profilanswer
 

ZeBorG a écrit :

Foulalala, tes noms de variables sont durs à lire. Tu devrais enlever tout les 'stk' redondant et nommer ta table stock_machin_chose à la place (remplacer 'machin_chose' par un term explicite...).


C'est une table d'un ERP, je vais pas changer son nom comme ça je crois ;)
 
Pis à la base, cette table ne sert pas du tout à ça, elle est à s'interfacer avec des modules BO (Business Object) mais vu qu'elle contient toutes les infos dont j'ai besoin, ça m'évite de faire les 15 jointures que j'avais au début et qui éffondraient Oracle :D (chais pas pkoi, faire des jointures sur des tables de 10 000 000 de lignes alors qu'il y a 20 000 utilisateurs connectés à la base, il aime pas du tout, mais alors vraiment pas du tout... 16h pour retourner les lignes :/)


Message édité par MagicBuzz le 13-03-2003 à 19:53:40
n°332436
ZeBorG
Yes we can!
Posté le 13-03-2003 à 19:57:34  profilanswer
 

mrBebert > j'te suis pas tout à fait là :??:  
 
Une autre alternative est de passé par une vue (comme sité précédemment) :
 
CREATE VIEW tmp_view id AS
SELECT DISTINCT id
FROM remarques
WHERE rem='bla1'
 
ensuite :
 
SELECT nom
FROM eleve, tmp_view
WHERE eleve.id NOT IN tmp_VIEW
 
Mais es ce que mySQL support les vues ?

n°332438
skylight
Made in France.
Posté le 13-03-2003 à 19:59:22  profilanswer
 

ZeBorG a écrit :

mrBebert > j'te suis pas tout à fait là :??:  
 
Une autre alternative est de passé par une vue (comme sité précédemment) :
 
CREATE VIEW tmp_view id AS
SELECT DISTINCT id
FROM remarques
WHERE rem='bla1'
 
ensuite :
 
SELECT nom
FROM eleve, tmp_view
WHERE eleve.id NOT IN tmp_VIEW
 
Mais es ce que mySQL support les vues ?


helas non :/

n°332441
ZeBorG
Yes we can!
Posté le 13-03-2003 à 20:02:26  profilanswer
 

il faut que je crée une table temporaire alors ?

n°332451
skylight
Made in France.
Posté le 13-03-2003 à 20:10:25  profilanswer
 

pourquoi pas, mais c'est vraiment pas la solution idéale et économique.

n°332455
mrbebert
Posté le 13-03-2003 à 20:11:35  profilanswer
 

Tiens non, il y a une requête en moins que ce que je pensais :)  
On devrait pouvoir s'en sortir avec quelque chose dans le genre :
SELECT eleve.*, r2.*
FROM eleve, remarques AS r1, remarques AS r2
WHERE r1.rem = 'remarque_qu_on_veut_pas'
AND eleve.id <> r1.id
AND r2.id = eleve.id


Message édité par mrbebert le 13-03-2003 à 20:12:11
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3

Aller à :
Ajouter une réponse
 

Sujets relatifs
[SQL] Oracle : rafraichissement d'un snapshot[SQL] requête sql sur une base access...help me !!!
[SQL] Un doute sur une requête pour attribuer des droits ?[java][newbie]savoir si le txtfield est bien un int[résolu]
[SQL] un doute sur le "as" dans Access et pour le "SQL pur" ?Ouvrir une popup sur une page existante ou bien fermer la page existan
[SQL] blob et image binaireDes arguments pour expliquer que les normes, c'est bien ?
Plus de sujets relatifs à : SQL, : Je n'arrive pas à formuler la requète qui va bien...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR