Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Query difficile

  1. #1

    Query difficile

    ho una tabella chiamata "programmi" contentente 3 campi importanti "idwj", "idwj2" e "idwj3".
    ognuno di questi 3 campi ha un valore INT corrispondente al campo "id" della tabella "wj".
    ora devo adattare questa query in modo da avere a disposizione il campo "nomewj" della tabella "wj" per ognuno dei 3 "idwj" della tabella programmi:

    $query_giorno_0 = "SELECT
    palinsesto.id, palinsesto.inizio, palinsesto.fine, palinsesto.replica, programmi.id AS idprogramma, programmi.nome AS nomeprogramma, wj.id AS idwj, wj.nome AS nomewj FROM
    palinsesto
    INNER JOIN programmi ON (programmi.id=palinsesto.idprogramma)
    INNER JOIN wj ON (wj.id=programmi.idwj) WHERE giorno = 0 ORDER BY inizio ASC";

    idee?

    per capirci meglio qualcosa vi mando la struttura delle due tabelle:

    codice:
    -- 
    -- Struttura della tabella `palinsesto`
    -- 
    
    CREATE TABLE palinsesto (
      id int(11) NOT NULL auto_increment,
      giorno tinyint(1) NOT NULL default '0',
      inizio time NOT NULL default '00:00:00',
      fine time NOT NULL default '00:00:00',
      idprogramma int(11) NOT NULL default '0',
      replica int(1) NOT NULL default '0',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM;
    
    -- --------------------------------------------------------
    
    -- 
    -- Struttura della tabella `programmi`
    -- 
    
    CREATE TABLE programmi (
      id int(11) NOT NULL auto_increment,
      nome varchar(255) NOT NULL default '',
      descrizione text NOT NULL,
      idwj int(11) NOT NULL default '0',
      idwj2 int(11) NOT NULL default '0',
      idwj3 int(11) NOT NULL default '0',
      nascosto set('0','1') NOT NULL default '0',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM;
    
    -- --------------------------------------------------------
    
    -- 
    -- Struttura della tabella `wj`
    -- 
    
    CREATE TABLE wj (
      id int(11) NOT NULL auto_increment,
      nome varchar(255) NOT NULL default '',
      password varchar(255) NOT NULL default '',
      email varchar(255) NOT NULL default '',
      descrizione text NOT NULL,
      nascosto set('0','1') NOT NULL default '0',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM;
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120

    Re: Query difficile

    Codice PHP:
    $query_giorno_0 "SELECT
    palinsesto.id, palinsesto.inizio, palinsesto.fine, palinsesto.replica, programmi.id AS idprogramma, programmi.nome AS nomeprogramma, wj1.id AS idwj1, wj1.nome AS nomewj1,
    wj2.id AS idwj2, wj2.nome AS nomewj2, wj3.id AS idwj3, wj3.nome AS nomewj3
    FROM palinsesto
    INNER JOIN programmi ON (programmi.id=palinsesto.idprogramma)
    INNER JOIN wj as wj1 ON (wj1.id=programmi.idwj) 
    INNER JOIN wj as wj2 ON (wj2.id=programmi.idwj2) 
    INNER JOIN wj as wj3 ON (wj3.id=programmi.idwj3) 
    WHERE giorno = 0 ORDER BY inizio ASC"

    Però attenzione, in questo modo se ti manca anche uno solo dei tre campi idwj il record non verrà estratto.
    Se prevedi che qualche campo possa mancare sostituisci le INNER JOIN su wj con delle LEFT JOIN

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.