Journal Requete MySQL sur questionnaire modulable + rapport/signal bruit adsl

Posté par  (site web personnel) .
Étiquettes : aucune
0
24
jan.
2004
Yo tous !

Un journal, deux questions qui n'ont rien à voir :

MySQL
====

Dans le cadre de mon serveur d'hébergement j'ai codé un système de questionnaire modulable, c'est à dire qu'au lieu d'avoir les questions representées par les champs d'une table et les réponses par des lignes de cette meme table, j'ai décidé de mettre les questions dans une table et les réponses dans une autre. Ainsi, je peux ajouter/enlever des questions sans toucher au scripts (php) ni à la structure des tables.
Je me retrouve avec la table des réponses qui a une gueule plus ou moins comme ça (je m'excuse par avance pour le formatage foireux!):

SITE QUESTION REPONSE
site1.zaup.org 1 0
site1.zaup.org 2 1
site1.zaup.org 3 1
site1.zaup.org 4 0
site1.zaup.org 5 1
site2.zaup.org 1 1
site2.zaup.org 2 1
site2.zaup.org 3 1
site2.zaup.org 4 0
site2.zaup.org 5 0
site3.zaup.org 1 0
site3.zaup.org 2 1
site3.zaup.org 3 0
site3.zaup.org 4 0
site3.zaup.org 5 0

Je voudrais maintenant effectuer des requetes booléennes comme par exemple :

tous les sites avec question 1 = 0 ET question 3 = 1

(réponse : seulement site1)

On aurait tout naturellement envie d'écrire ça :

select site from table where (question = 1 AND reponse = 0) AND (question = 3 AND reponse = 1)

mais il va de soi que ça ne marche pas !
Des gurus dans la salle ?


Rapport signal/bruit ADSL
================

Intro : j'ai une carte Bewan PCI ST et un abonnenemnt 512/128 chez Nerim

unicorn_status me dit que :
linserv:/# unicorn_status
Modem State : SHOWTIME_L0
Remote Report : Showtime
Last Failure :
Time Connected : 02:11:05
Modulation : ANSI
Rate Us/Ds (Kbps) : 160 608
Cap. Occupation Us/Ds (%) : 23 88
Noise Margin Us/Ds (dB) : 31 7
Attenuation Us/Ds (dB) : 31 52
Output Power Us/Ds (dBm) : 12 15
FEC Errors Us/Ds : 21 2
CRC Errors Us/Ds : 16 6
HEC Errors Us/Ds : 9 9
Driver Version : 0.7.4
Firmware Version : PCI_1.9.6.1

Est-ce que c'est bien ou c'est mal ? Une comparaison ?
  • # Re: Requete MySQL sur questionnaire modulable + rapport/signal bruit adsl

    Posté par  . Évalué à 1.

    Si ta table contient trois champs ta requête select doit mentionner les champs que tu vas utiliser.

    SELECT * FROM TABLE
    SELECT SITE,QUESTION,REPONSE FROM TABLE

    Je trolle dès quand ça parle business, sécurité et sciences sociales

  • # Re: Requete MySQL sur questionnaire modulable + rapport/signal bruit adsl

    Posté par  . Évalué à 2.

    Je ne suis pas sûr d'avoir bien compris ton problème mais la réponse qui me vient à l'esprit est de faire un UNION :
    select site from table where question = 1 AND reponse = 0
    UNION
    select site from table where question = 3 AND reponse = 1

    Par contre, je ne sais pas si les nouvelles versions de mysql l'implémentent.
  • # Re: Requete MySQL sur questionnaire modulable

    Posté par  . Évalué à 2.

    Bon ben ne sais pas trop si ca va t'aider mais j'arrive au bon resultat avec ça dans postgresql (pas teste dans mysql mais a priori mysql connait aussi les jointures ou alors ça peut t'inspirer).


    test=# select a.site from table a left outer join table b on a.site = b.site where (a.question ='3' and a.reponse ='1') AND (b.question ='1' and b.reponse ='0') group by a.site ;
    site
    ----------------
    site1.zaup.org
    (1 ligne)


    Veux bien aussi qu'un guru qui passerais par la donne son avis, je sais pas si c'est tres propre de faire des jointures sur la meme table.... m'enfin ca a l'air de fonctionner

    mes 2 cts
  • # Re: Requete MySQL sur questionnaire modulable + rapport/signal bruit adsl

    Posté par  . Évalué à 2.

    Pour le SQL, en effet, ça ne peut pas marcher ! Par contre, cela fonctionnerait très bien avec un OR central. Le problème vient du fait que ce qui t'intérresse, ce n'est pas seulement les lignes qui correspondent à un certain critère, mais le fait qu'il y ait PLUSIEURS de ces lignes, sur des critères différents. Il faut donc interroger deux fois la table, et interpoler les résultats. Donc, en une requête:

    SELECT DISTINCT a.site FROM TABLE a, TABLE b
    WHERE a.site = b.site
    AND a.question = 1
    AND a.reponse = 0
    AND b.question = 3
    AND b.question = 0

    Et cela devrait fonctionner. Note qu'en temps normal il vaut mieux utiliser JOIN qu'un produit cartésien (selection de plusieurs tables séparées par des virgules), mais dans le cas présent il ne s'agit pas d'une réelle jointure, en tout cas d'une table dépendante d'une autre ...
  • # Re: Requete MySQL sur questionnaire modulable + rapport/signal bruit adsl

    Posté par  (site web personnel) . Évalué à 2.

    7 db de rapport signal/bruit sur la partie descendante c'est beaucoup. Il faudrait avoir au moins 10 db pour que la ligne ne génère plus d'erreur à cette vitesse de synchro.

    Tu as pas mal d'atténuation aussi.

    Dans l'état actuel de ta ligne, tu ne pourras pas avoir du 1024 kbit/s car avec une synchro à 608 kbit/s tu es à 88 % de ce que permet ta ligne.

    Bref vérifie tes prises, tes câblages, les éventuelles rallonges, les filtres. Vérifie ausi que tu n'as pas de conensateurs dans tes prises (ceux qui sont un peu vieux ou mal branchés peuvent générer pas mal de parasites ; tu peux enlever ces condos sans problème). Il faut aussi que ta ligne ne soit pas proche d'une source de bruit, telle qu'un moteur, un équipement HF ou que sais-je...

    Pensez à l'environnement avant d'imprimer ce commentaire - Please consider the environment before printing this comment

    • [^] # Re: Requete MySQL sur questionnaire modulable + rapport/signal bruit adsl

      Posté par  (site web personnel) . Évalué à 2.

      Merci beaucoup pour ces informations. Heureusement je n'ai aucune intention de passer au 1024 vu les prix de Nerim...
      Je me posais la question de la qualité du signal parce que justement j'avais revu assez radicalement la configuration des lignes téléphoniques chez moi et maintenant c'est bcp plus propre : le filtre adsl est branché sur un bout de cable posé par FT qui est juste à l'entrée de mon habitation, et le serveur est à 50 cm. Donc je pense que mon installation n'est pas en cause, c'est plutot ma distance de la centrale (je ne suis pas en centre ville).

      Merci en tout cas.
  • # Connexion adsl

    Posté par  . Évalué à 1.

    Sachant que l'attenuation max pour etre eligible adsl c'est 60dB c'est moyen en Download. Mais bon t'a l'adsl je pense que c'est lessentiel ;)
    a+

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.