Couple de valeurs sans duplication avec Mysql

snoop83 -  
 Rollin'babe !! -
Bonjour,
j'aimerai écrire une requête en Mysql (5.0) qui me construit les couples de noms, par exemple de livres, où il n'y aurait pas (book1, book1) et où il n'y aurait que (book1, book2) et pas son inverse (book2, book1)

Merci d'avance

9 réponses

  1. Rollin'babe !!
     
    Bjour,

    Il faudrait d'abord examiner la structure de tes tables pour répondre à ta question.

    Merci.
    0
  2. snoop83
     
    voilà les tables :

    AUTHOR (name,citizenship,byear,bplace)
    BOOK (isbn,title,author)
    LIBRARY (lname,city)
    BINDEX (isbn,subject)
    IN_STOCK (isbn,edition,lib_name,quantity)

    Et je cherche donc à répondre à la requête suivante :

    For all couples of books that have a common subject and both appear in at least
    two libraries print their titles. Be sure that no duplicates exist (i.e. <title1, title2>,
    <title2, title1>) and that no book appears as a couple with itself.

    Merci.
    0
  3. Rollin'babe !!
     
    Re,

    Peux tu ajouter tes clefs primaires en gras ou en souligné dans tes tables stp pour répondre correctement à ta demande ?.

    Merci.
    _____________________________________________________________________________
    "Ouais mec - après ma mort avant de r'joindre l'Ancien chuis allé faire comme ca
    un chtit tour à la "Foire du slip"... une vraie bande de mariolles dis donc
    - ca fait pitié - chuis r'monté vite fait ben fait!! (:>" (Jésus Christ).
    0
  4. snoop83
     
    Les clés primaires ne sont pas précisées mais je pense que c'est ca.

    AUTHOR (name,citizenship,byear,bplace)
    BOOK (isbn,title,author)
    LIBRARY (lname,city)
    BINDEX (isbn,subject)
    IN_STOCK (isbn,edition,lib_name,quantity)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Rollin'babe !!
     
    Re,

    Peux tu aussi ajouter les Foreign Keys et vers quelles tables elles pointent stp pour répondre correctement à ta demande ?.

    Par exemple 'subject' de la table BINDEX - c'est pas bien évident ;>...

    Merci.
    0
  7. snoop83
     
    AUTHOR (name,citizenship,byear,bplace)
    BOOK (isbn,title,#author)
    LIBRARY (lname,city)
    BINDEX (#isbn,subject)
    IN_STOCK (#isbn,edition,#lib_name,quantity)
    0
  8. Rollin'babe !!
     
    Re,

    "For all couples of books that have a common subject and both appear in at least
    two libraries print their titles. Be sure that no duplicates exist (i.e. <title1, title2>,
    <title2, title1>) and that no book appears as a couple with itself."


    Je propose déjà ceci :

    ->

    "For all couples of books that have a common subject print their titles. Be sure that no duplicates exist (i.e. <title1, title2>, <title2, title1>) and that no book appears as a couple with itself." </ital>

    SELECT A.TITLE, C.TITLE
    FROM BOOK A, BINDEX B, BOOK C, BINDEX D
    WHERE A.ISBN = B.ISBN
    AND C.ISBN = D.ISBN
    AND B.SUBJECT = D.SUBJECT
    AND A.TITLE < C.TITLE <-- L'astuce pour répondre à ta question initiale

    Il me manque l'intégration de cette clause :

    ".... and both appear in at least two libraries...."

    Pis là... je pense à un GROUP BY HAVING sur IN_STOCK mais c'est pas évident pour moi.
    J'y travaille.

    A+.
    0
  9. Rollin'babe !!
     
    Re,

    Je propose cette requête à vérifier :

    SELECT A.TITLE, C.TITLE
    FROM BOOK A, BINDEX B, BOOK C, BINDEX D
    WHERE A.ISBN = B.ISBN
    AND C.ISBN = D.ISBN
    AND B.SUBJECT = D.SUBJECT
    AND A.TITLE < C.TITLE
    AND A.ISBN IN
    (SELECT DISTINCT(ISBN)
    FROM IN_STOCK
    GROUPE BY (ISBN, EDITION) HAVING COUNT(*) >= 2)
    AND C.ISBN IN
    (SELECT DISTINCT(ISBN)
    FROM IN_STOCK
    GROUPE BY (ISBN, EDITION) HAVING COUNT(*) >= 2)

    Note :

    - Seule contrainte supposée : "".... and both, for the same EDITION, appear in at least two libraries...." .

    Merci de m'indiquer si il faut lever cette contrainte supposée : ca risque d'être encore plus chaud !!...

    Pour te faire la main sur le même thème : https://cs.nyu.edu/courses/spring00/G22.2433-001/as2.html

    Cordialement.
    0