Помогите создать правиьный запрос в БД

Тема в разделе "PHP", создана пользователем 999udaw, 15 фев 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. 999udaw

    999udaw Писатель

    Регистр.:
    8 сен 2008
    Сообщения:
    36
    Симпатии:
    0
    РЕБЯТА ПОСМОТРИТЕ ПОЖАЛУЙСТА ПОДСКАЖИТЕ ЧАЙНИКУ

    вот в процессе возник вопрос который никак без посторонней помощи или подсказки решить не могу. вопрос по выборке данных из БД из двух таблиц в которых например ID И GAME_ID имеют одинаковое значение . и вывод этих данных в цыкле . вот пример кода на php.

    Код:
    <? 
    		$result2 = mysql_query("SELECT * FROM online  ",$db);
    if (!$result2)
    {
    echo "<p>Запрос на выборку данных из базы не прошел напишите об этом администратору емаил. <br> <strong>Код ошибки: </strong></p>";
    exit (mysql_error());
    }
    if (mysql_num_rows($result2) > 0)
    {
    $myrow2 = mysql_fetch_array($result2);
    
    $ID=$myrow2["GAME_ID"];
    
    $result = mysql_query("SELECT Game_Name FROM games  WHERE ID='$ID' ",$db);
    
    $myrow = mysql_fetch_array($result);
    
    do 
    {
    printf ("<div>
                   Номер игры  %s 
    			   НАЗВАНИЕ %s 
    				 
    				  
                      </div><br><br>", $myrow2["ID"], $myrow["Game_Name"]);
    }
    while ($myrow2 = mysql_fetch_array($result2));
    
    
    }
    else
    {
    echo "<p>Информация по запросу не может быть извлечена, в таблице нет записей.</p>";
    exit();
    }
    		
    	
    
    		?>
    
    и вот что получаеться

    Код:
     Номер игры 10116 НАЗВАНИЕ Долина Богов
    
    
    Номер игры 10383 НАЗВАНИЕ Долина Богов
    
    
    Номер игры 11327 НАЗВАНИЕ Долина Богов
    
    
    Номер игры 13915 НАЗВАНИЕ Долина Богов
    
    
    Номер игры 15733 НАЗВАНИЕ Долина Богов
    
    
    Номер игры 2077 НАЗВАНИЕ Долина Богов 
    
    то есть данные из первой таблицы выводятся в цыкле а из второй нет
    как это сделать?
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Чем не устраивает выборка сразу из 2-х таблиц?
    Код:
    SELECT * FROM table1, table2 WHERE table1.ID = table2.GAME_ID;
     
  3. 999udaw

    999udaw Писатель

    Регистр.:
    8 сен 2008
    Сообщения:
    36
    Симпатии:
    0
    вот спасибо что подсказал щас буду пробовать .
    просто сам я только учусь видел выборку из одной таблицы так и делал не знал что можно из двух срау

    Добавлено через 4 минуты
    а вот можна ли извлекать не все данные из таблиц. как это прописывать. подскажите примерчиком. например из первой все поля а из второй выборочно 2 каких нибудь
     
  4. bumer3

    bumer3

    Регистр.:
    10 янв 2008
    Сообщения:
    291
    Симпатии:
    154
    HTML:
    SELECT table1.*, table2.id, table2.name FROM ....
     
    999udaw нравится это.
  5. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Если у тебя две таблицы
    games
    id_name | game_name
    1 ---- НАЗВАНИЕ Долина Богов
    2 ---- Долина
    online

    id_online | n_online
    1 --- 10116
    2 --- 2077
    Выборка будет такой..
    PHP:
    $ng mysql_query("SELECT 
    `on`.`id_online` AS `id_o`, 
    `on`.`n_online`  AS `namber`,
    `g`.`id_name`    AS `id_n`,
    `g`.`game_name`  AS `name`
    FROM 
    `online` AS `on`,
    `games`  AS `g`
    WHERE  `on`.`id_online` = `g`.`id_name` 
    "
    ,$db);

    while (
    $ngr mysql_fetch_assoc($ng))
    {
    echo 
    '<br />Номер игры: '.$ngr['namber'].' Название игры: '.$ngr['name'] ;
    }
    Специально написал с алиасами чтобы было понятно как выбирать когда много полей в разных таблицах...
    выведет типо..

    Номер игры: 10116 Название игры: НАЗВАНИЕ Долина Богов
    Номер игры: 10383 Название игры: Долина
    Номер игры: 2077 Название игры: НАЗВАНИЕ
    Номер игры: 15733 Название игры: Богов

    Да и выбросите printf это слишком рессурсоемкая функция...ИМХО типо из курса ПОПОВА...
     
    999udaw нравится это.
Статус темы:
Закрыта.