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)

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)

dominique.stock

Apparement, tes infos datent
[ Lien ]

Dom

lundi 25 juin 2007 à 17:49:43 | Re : Un "select" particulier (je ne sais pas comment faire ni même si c'est possible)

Polack77

Encor MERCI
Tu sauve mon temps de traitement (ça vas m'évité de me faire insulté, voir pire, lol)

A+

Amicalement
Pensez "Réponce acceptée"


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



1 2

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


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.