Problème avec une requête... [MySQL] - Programmation
Marsh Posté le 24-08-2002 à 10:22:43
"SELECT UNION..." , je connais plus la syntaxe exacte...
telecharge la doc MySQL ici tu auras toutes tes reponses ....
http://dev.nexen.net/docs/mysql/chargement.html
Marsh Posté le 24-08-2002 à 11:00:24
ah ouais mais apparement ça ne marche que sous MySQL 4.0...
je suis sous une 3.23.xx
Z'auriez pas une autre solution?
Marsh Posté le 24-08-2002 à 11:43:22
bin normallement c'est select distinct( ...) mais je ne sais pas si c supporté mar mysql
Marsh Posté le 24-08-2002 à 11:45:13
DarkLord a écrit a écrit : bin normallement c'est select distinct( ...) mais je ne sais pas si c supporté mar mysql |
select distinct c'est assez standard donc je suppose que mysql le reconnait.
Marsh Posté le 24-08-2002 à 12:18:05
oui mais avec distinct je ne vais pas avoir ce que je veux
Je veux en fait sélectionner les lignes qui auraient l'ID a ou b ET ayant le même chemin (qui est à trouver dans la table...)
Je crois pas que ce soit faisable en une seule requête?
Marsh Posté le 24-08-2002 à 12:21:15
comment veux tu qu'on devine ce que tu veux faire si tu le précises pas !
Marsh Posté le 24-08-2002 à 12:24:11
ben j'avé essayé de l'expliquer au début! mais c pas facile à faire comprendre dsl!
Marsh Posté le 24-08-2002 à 12:26:33
qu'est ce que tu appelles par chemin déjà ...
Marsh Posté le 24-08-2002 à 12:32:37
c un des champ de ma table
Citation : Voilà... j'ai une table qui se présente à peu près comme ça : |
Marsh Posté le 24-08-2002 à 12:42:06
toutoune a écrit a écrit : c un des champ de ma table
|
un record tu veux dire? Un champ c'est la valeur d'une colonne d'un record ...
Marsh Posté le 24-08-2002 à 12:49:16
bien écoute, sous PHPMyAdmin par exemple, quand je fais créer une nouvelle table, il me demande le nom bre de CHAMPS que je souhaite... j'appelle donc ça une champ
Sinon as-tu compris ma question ou tu veux que j'apporte des précisions?
Marsh Posté le 24-08-2002 à 13:04:36
toutoune a écrit a écrit : oui mais avec distinct je ne vais pas avoir ce que je veux Je veux en fait sélectionner les lignes qui auraient l'ID a ou b ET ayant le même chemin (qui est à trouver dans la table...) Je crois pas que ce soit faisable en une seule requête? |
SELECT T1.ID, T1.REP, T1.TITRE
FROM TaTable T1, TaTable T2
WHERE T1.ID IN (a, b)
AND T2.ID IN (a, b)
AND T2.ID <> T1.ID
AND T1.REP || T1.TITRE = T2.REP || T2.REP
A priori, ça doit marcher.
Par contre, j'avoue que j'en suis pas sûr du tout et que j'ai la flèmme de tester
Par contre, ton besoin de semble bizarre. Tu veux expliquer en détail ce que tu veux faire, dans quel contexte ?
Parceque ça me semble bizarre de vouloir récupérer ça comme ça
Marsh Posté le 24-08-2002 à 13:05:23
DarkLord a écrit a écrit : un record tu veux dire? Un champ c'est la valeur d'une colonne d'un record ... |
Un record, c'est une ligne (retournée par une requête), un champ c'est une colonne
Marsh Posté le 24-08-2002 à 13:05:59
toutoune a écrit a écrit : bien écoute, sous PHPMyAdmin par exemple, quand je fais créer une nouvelle table, il me demande le nom bre de CHAMPS que je souhaite... j'appelle donc ça une champ |
tu confonds colonnes et ligne ...
Marsh Posté le 24-08-2002 à 13:06:12
arf grillaid
Marsh Posté le 24-08-2002 à 13:49:21
MagicBuzz a écrit a écrit : Par contre, ton besoin de semble bizarre. Tu veux expliquer en détail ce que tu veux faire, dans quel contexte ? Parceque ça me semble bizarre de vouloir récupérer ça comme ça |
Ok je vais expliquer en gros...
J'ai fait un moteur de recherche qui indexe automatiquement toutes mes pages.
Grace à mes tables, je sais dans quelle(s) page(s) je peux trouver quel mot.
Et j'ai besoin de faire ça lorsque j'effectue une recherche sur toute une expression. Je recherche alors LA page qui contient ces deux mots. (mes mots sont identifiés par le 'id'
C'est plus clair?
En tout cas merci je vais essayer ça ce soir!
@+
Marsh Posté le 24-08-2002 à 13:59:38
repense ton data model il est pourris. Si il était bien pensé ca serait BCP plus simple de faire ce genre de requête ...
Marsh Posté le 24-08-2002 à 14:07:29
Bon, ma réponse doit faire ce que tu veux alors.
PS: c'est quand je lis ce genre de topic que jeme dis que M$ à vraiment eu une très bonne idée que d'intégrer "FullTextSearch" à SQL Server, et IndexServer pour les pages statiques... Comment ça simplicite la vie
Marsh Posté le 24-08-2002 à 14:32:36
mais c pas standard ...
Marsh Posté le 24-08-2002 à 16:00:02
DarkLord a écrit a écrit : mais c pas standard ... |
Qu'est-ce qui n'est pas standard
Marsh Posté le 24-08-2002 à 17:34:36
MagicBuzz a écrit a écrit : Qu'est-ce qui n'est pas standard |
bin les fonctionnalités de sql server tiens ...
Marsh Posté le 24-08-2002 à 17:42:08
C'est pas des fonctionnalités, c'est des procédures stockées (du moins, c'est implémenté de façon à tourner comme une PS) donc si, c'est tout ce qu'il y a de plus standard.
Rien n'empêche un éditeur de développer des PS avec une interface compatible pour oracle et les requêtes seront portables.
Au contraire, M$ pour un coup s'est bien démerdé. Ils ont fait ça proprement sans ajouter d'instruction au langage T-SQL (qui fait l'objet d'une norme déposée) qui est par ailleurs 95% compatible avec le PL/SQL (l'autre standard)
Marsh Posté le 24-08-2002 à 17:45:48
[HS] Voici la doc de SQL Server 2K pour une des fonctions de FullTextSearch.
La fonction retourne une table temporaire capable d'être utilisée lors d'une jointure par exmple.
L'appel de la fonction est identique à n'importe quelle fonction écrite en T-SQL (ou PL/SQL)
Citation : CONTAINSTABLE |
Marsh Posté le 24-08-2002 à 19:28:40
DarkLord a écrit a écrit : repense ton data model il est pourris. Si il était bien pensé ca serait BCP plus simple de faire ce genre de requête ... |
T'a une meilleure idée?
Pour moi, le fait de savoir dans quelles pages se trouve quel mot et avec quelle fréquence me semble être le plus simple non?
Marsh Posté le 24-08-2002 à 19:32:12
Ca te dis pas de stocker plutôt les textes de tes pages dans la base ?
Ca sera un peu plus simple non ?
Marsh Posté le 24-08-2002 à 19:37:17
toutoune a écrit a écrit : T'a une meilleure idée? Pour moi, le fait de savoir dans quelles pages se trouve quel mot et avec quelle fréquence me semble être le plus simple non? |
vi mais c la façon dont tu représentes l'info en base qui fait que ta requete est compliquée ...
Marsh Posté le 24-08-2002 à 19:39:49
C'est vrai que déjà, tu peux ajouter un champ "NB" qui contient le nombre d'occurences du mot dans la page.
Et comme ça tu peux même te lancer dans des fonctions plus complexes, permettant de pondérer le nombre d'occurences par le ration de présence de chaque mot clé, afin de savoir si en plus de contenir les mots, la page parle ou non de la chose...
Marsh Posté le 24-08-2002 à 19:49:37
MagicBuzz a écrit a écrit : Ca te dis pas de stocker plutôt les textes de tes pages dans la base ? Ca sera un peu plus simple non ? |
Oui mais un site complet dans une base de données... je trouve que ça fais un peu de la place perdue non?
Là pour un site de 300 pages (générables) environ, j'ai une base de 4Mo.
MagicBuzz a écrit a écrit : C'est vrai que déjà, tu peux ajouter un champ "NB" qui contient le nombre d'occurences du mot dans la page. Et comme ça tu peux même te lancer dans des fonctions plus complexes, permettant de pondérer le nombre d'occurences par le ration de présence de chaque mot clé, afin de savoir si en plus de contenir les mots, la page parle ou non de la chose... |
C'est déjà fait. J'avais dit plus haut que 'en gros' la table se présentait avec id/champ/titre. Mais j'ai aussi 'poids' et 'description'
Marsh Posté le 24-08-2002 à 21:36:09
des doublons parce qu'on mot peut se trouver dans plusieurs pages différentes!
Marsh Posté le 24-08-2002 à 21:48:57
oui mais "chemin" et "titre" seront différents dans ce cas...
Marsh Posté le 24-08-2002 à 22:55:34
oui et alors?
(comme ils sont différents ce ne sont donc pas des doublons!)
Je te suis plus là!
Marsh Posté le 24-08-2002 à 23:38:06
toutoune a écrit a écrit : oui et alors? (comme ils sont différents ce ne sont donc pas des doublons!) Je te suis plus là! |
ben utilise ton ancienne requête et utilise le champ "NB" en plus dans le seclet et voilà
Marsh Posté le 24-08-2002 à 23:39:48
euh... koi que non... après relecture, je mélange avec un autre topic (un problème à moi )
Marsh Posté le 24-08-2002 à 10:10:26
Voilà... j'ai une table qui se présente à peu près comme ça :
id | chemin | titre | ...
-------------------------
sachant que j'ai plusieurs entrées dans cette table (!), je voudrais à partir de plusieurs id sélectionner la ligne dont le chemin est identique pour ces id...
Par exemple j'ai ça :
1 | rep1 | titre1
2 | rep2 | titre2
3 | rep1 | titre1
3 | rep2 | titre2
Si je fais ma sélection sur les id 1 et 3 je voudrai que ma requête me renvoie rep1 et titre1.
C'est possible?
Ou faut que j'utilise un traitement PHP derrière?