|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible) [ PostgreSQL / Requêtes ] (Polack77)
Informations & options pour cette discussion
|
lundi 25 juin 2007 à 13:59:49 |
Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)

Polack77
|
Bonjour,
Je développe un logiciel qui (entre autre) enregistre des
phrases en les découpant en mot (le pourquoi est un peut compliquer à expliquer
mais est justifiable).
La première table est nommé "Phrase" contient 4
colonnes (ID_Phrase,langue,ID_Mot,Order_Mot)
La seconde table est nommé "Mot" contient 2 colonnes
(ID_Mot,Mot) Soit
par exemple :
La phrase : "Bonjour tout le monde." sera stocké
dans deux tables :
----------------------------------------------
----------------------
| ID_Phrase | Langue | ID_Mot | Order_Mot
| | ID_Mot
| Mot |
----------------------------------------------
----------------------
| 1
| 'FrFr' | 0
| 0
| |
0 | 'Bonjour' |
| 1
| 'FrFr' | 1
| 1
| |
1 |
'tout' |
| 1
| 'FrFr' | 2
| 2
| |
2 |
'le' |
| 1
| 'FrFr' | 3
| 3
| |
3 | 'monde.' |
----------------------------------------------
---------------------- Pour le moment je sais écrire et lire une phrase sans
problème mais je voudrais maintenant savoir si une phrase existe déjà en base
ou non (sachant que je connais les ID_Mot de ma phrase à tester, je ne sais même pas si ça un intérêt )
Sois avoir une requête à la quelle je passe mes mots (ou référence au mot) et
qui me renvoie un ID_Phrase si la phrase existe ou rien si elle n'existe pas.
Possible ou non à faire sous forme de requête?
Remarque : Je travail sous PostgreSQL.
J'espère avoir été claire.
Merci par avance Amicalement  Pensez "Réponce acceptée"
|
|
|
|
lundi 25 juin 2007 à 14:50:17 |
Re : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)

dominique.stock
|
Bonjour, Si la phrase "Tout le monde Bonjour" est différente de "Bonjour Tout le monde", alors, je pense que le mieux serait une procédure Stockée ...
Dom
|
|
|
|
lundi 25 juin 2007 à 15:46:41 |
Re : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)

Polack77
|
Je ne sais pas faire de procédure stockée .
Si tu connais un tuto bien je suis preneur .
Par contre mon programme final devra être compatible à toutes les base de données en
passant par l'ODBC (heeeeee, suije claire????) et je crois que la déclaration
d'une procédure stoker n'est pas la même en postgreSQL et en MySQL par exemple
(à moins que je ne dise des grosses conneries???)
Je suis en train de faire un bout de code VB pour faire ce que j'ai demandé,
par contre du coup j'exécute autant de requête qu'il y à de phrase qui commence
par le même mot que la phrase que je teste (désol je n'arive pas à le dire plus clairement ). Si tu sais faire une requête qui me retourne les deux phrases
"Tout le monde Bonjour" et "Bonjour Tout le monde" j'aurais
beaucoup moins de teste à faire par la suite.
La fonction VB (informatif et constante à ajouté) : Private Function PhraseExisteEnBdD(ByRef ReferanceRetour As Long, ByRef TableauMot() As Long) As Boolean Dim Donnees As ADODB.Recordset Dim ChaineTansitionTexte As String Dim ChaineMot As String Dim Compteur As Long Dim Compteur2 As Long Dim Tansition_TexteTrouver As Boolean Connection.RequeteRecupDonnees "select clef_libelle from transition_texte where num_libelle=" & TableauMot(0) & " and order_libelle=0;", Donnees ChaineTansitionTexte = Donnees.GetString(adClipString, , Chr(2), Chr(1)) Set Donnees = Nothing For Compteur = LBound(Split(ChaineTansitionTexte, Chr(1))) To UBound(Split(ChaineTansitionTexte, Chr(1))) - 1 Tansition_TexteTrouver = True Connection.RequeteRecupDonnees "select num_libelle from transition_texte where clef_libelle=" & Split(ChaineTansitionTexte, Chr(1))(Compteur) & " order by order_libelle;", Donnees ChaineMot = Donnees.GetString(adClipString, , Chr(2), Chr(1)) Set Donnees = Nothing If (UBound(TableauMot) - LBound(TableauMot)) = (UBound(Split(ChaineMot, Chr(1))) - 1) - LBound(Split(ChaineMot, Chr(1))) Then For Compteur2 = LBound(TableauMot) To UBound(TableauMot) If TableauMot(Compteur2) <> Split(ChaineMot, Chr(1))(Compteur2) Then Tansition_TexteTrouver = False End If Next Else Tansition_TexteTrouver = False End If If Tansition_TexteTrouver Then ReferanceRetour = Split(ChaineTansitionTexte, Chr(1))(Compteur) PhraseExisteEnBdD = True Exit Function End If Next PhraseExisteEnBdD = False End Function
Amicalement  Pensez "Réponce acceptée"
|
|
|
|
lundi 25 juin 2007 à 15:57:36 |
Re : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)

dominique.stock
|
un truc comme ça .. ? select id_phrase from phrase where id_mot in (select id_mot from mot where mot in (....)) group by id_phrase having(count(id_mot)) = nbmot
Dom
|
|
|
|
lundi 25 juin 2007 à 17:08:48 |
Re : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)

Polack77
|
Désol pour l'attente (client au tél)  MERCI!!!  Ce n'est pas exactement ce que je voulais (ce qui explique que je ne valide pas ta réponce pour le moment) mais les temps de traitements de mon appli on considérablement réduit graçe à toi (div par ~ 10!!!  ) Amicalement  Pensez "Réponce acceptée"
|
|
|
|
lundi 25 juin 2007 à 17:30:53 |
Re : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)

Polack77
|
Hooooo non   !!! Ta solution est bien pour postgreSQL mias il semble que MySQL ne sais pas faire de requete imbriqué. ici en bas de la page : [ Lien ]Je garde pour le momant mon code mega long  Merci quand même Amicalement  Pensez "Réponce acceptée"
|
|
|
|
lundi 25 juin 2007 à 17:40:17 |
Re : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)
|
|
lundi 25 juin 2007 à 17:49:43 |
Re : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)
|
|
mardi 26 juin 2007 à 14:05:22 |
Re : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)

Polack77
|
J'ai trouvé
Je fais une commande "INTERSECT" soit :
SELECT ID_Phrase FROM Phrase WHERE ID_Mot = 0 AND Order_Mot = 0
INTERSECT
SELECT ID_Phrase FROM Phrase WHERE ID_Mot = 1 AND Order_Mot = 1
INTERSECT
SELECT ID_Phrase FROM Phrase WHERE ID_Mot = 2 AND Order_Mot = 2
INTERSECT
SELECT ID_Phrase FROM Phrase WHERE ID_Mot = 3 AND Order_Mot = 3
Du fais que je construit mes requêtes par code programme (en VB) c'est super
simple à faire.
De plus (à moins que je ne dise des conneries) la commande
"INTERSECT" est en SQL2 donc compatible à quasi tous les types de
base de données.
Merci à tout ce qui on cherchés et bien sure merci à
"dominique.stock" pour ces réponses .
Amicalement
Pensez "Réponce acceptée"
|
|
|
|
mardi 26 juin 2007 à 14:12:22 |
Re : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)

dominique.stock
|
Bien joué !!
Je ne savais pas que tu construisais tes requêtes.
INTERSECT : moi j'utilise SQLServer et cela n'existe pas ... j'aimerais bien...
Encore une fois: Bien joué !
Dom
|
|
|
Cette discussion est classé dans : possible, mot, id, existe, phrase
Répondre à ce message
Sujets en rapport avec ce message
Nombre de requête imbriquer max??? [ par Polack77 ]
Bonjour , Je développe acculement une appli (en VB) qui gère une base de données. Mon problème est que je dois être compatible avec un maximum de SGBD
Requête qui boucle sur elle même [ par spyro666 ]
Bonjour, j'aurais besoin d'une information : Comment puis-je faire une requête qui boucle sur elle même avec mysql4 ? Est au moins possible ou faut-il
Gestion doublons group by & order by [ par yazer ]
voila, je souhaite sélectionner le company_id correspondant au company_id de ayant le date_embauche le plus élevé chaque user_idpar exemple :company_i
affichage [ par Eros2007 ]
Bonjour tout le monde voila j'ai une petite chose qui m'echape pour l'affichage. voila j'utilise 3 table paradox table1(élèves),table2(cours)
insérer une variable dans une requete sql [ par fatatra ]
Bonjour a tous;je cherche a integrer une variable php dans une requéte my sql.exemple:$id = $_POST['listeJoueurs']; //je recupere l'id correspond a u
Inserer des données [ par JALEO WAHRANI ]
Bonjour à tous,je souhaiterais inserer des données dans 2 tables à la fois.On a d'un côté la table t_personnes(id, nom, prenom, no_insee)et de l'a
Pb de requete Drop [ par yanis7518 ]
Salut a tousj'ai une requete qui doit supprimer la table seulement si elle existe. Voici la Requete : IFEXISTS(<font color="#0
syntaxe SQL, insertion d'une chaine de caracteres [ par LaTatadu91 ]
Bonjour a tous,Voila mon probleme j'effectue a partir d'un programme dev en C++ des requetes SQL vers SQL Server Express.Ce sont des requetes plutot s
Probleme d'insert sql a partir d'un code C [ par caro4200 ]
Bonjour,J'ai une procédure stockée qui s'excute bien lorsque je l'appelle de dataviewer.Par contre, lorsque je l'appelle à partir d'un code C, on sort
Problème SQL TQuery [ par corole3 ]
Probleme avec un TQuery + requetes Bonsoir, j'arrive à envoyer ma requête à ma base via SQL explorer, tout fonctionne. Si je met ma requête d
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|