2015-02-02 2 views
0

Мне просто нужно простые запросы на самом деле,Отображение данных из 4 (четырех) Таблицы в Mysql

Вот мои таблицы:

Информация -> id_info, год, information_name , person_name, country_id, state_id, city_id

Страна -> id, country_id, country_name

государственный -> идентификатор, state_id, country_id, state_name

Сити -> идентификатор, CITY_ID, state_id, city_name

У меня работает несколько запросов, например'S:

      SELECT * 
         FROM information, country, state, city 
         WHERE information.country_id =country.country_id 
         AND information.state_id = state.state_id 
         AND information.city_id = city.city_id 
         GROUP BY information.id_info; 

Мои простые скрипты:

echo '<td>'.$data['country_name'].'</td> 

echo '<td>'.$data['state_name'].'</td> 

echo '<td>'.$data['city_name'].'</td> 

$data-> Is my while script with $query=mysql_query... 

из приведенных выше отображает только два (2) данных от моей базы данных запросов, но в базе данных имеет пять (5) данных.

Затем я пытаюсь удалить оператор Group, но данные зацикливаются и отображают почти 8000 данных, но я получил только 5 данных на таблицах.

Я пробовал все, осталось присоединиться, право присоединиться, внутреннее соединение ....

мне нужна помощь, я знаю, что это довольно просто, но как я могу просто отобразить все данные в обычном режиме.

Спасибо.

Вот мои полные сценарии для отображения данных:

<table cellpadding="5" cellspacing="0" border="1"> 
    <tr bgcolor="#CCCCCC"> 
     <th>No.</th> 
     <th>Year</th> 
     <th>Information Name</th> 
     <th>Person Name</th> 
     <th>Country</th> 
     <th>State</th> 
     <th>City</th> 
     <th>Act</th> 
    </tr> 

    <?php 
    include('connect.php'); 

    $query = mysql_query("SELECT * 
        FROM information 
        INNER JOIN country ON information.country_id =country.country_id 
        INNER JOIN state ON information.state_id = state.state_id 
            INNER JOIN city ON information.city_id = city.city_id 
            GROUP BY information.country_id, information.state_id, information.city_id") or die(mysql_error()); 


    if(mysql_num_rows($query) == 0){ 


     echo '<tr><td colspan="6">No data!</td></tr>'; 

    }else{ 


     $no = 1;  
     while($data = mysql_fetch_assoc($query)){ 

      echo '<tr>'; 
       echo '<td>'.$no.'</td>';  
       echo '<td>'.$data['year'].'</td>'; 
       echo '<td>'.$data['information_name'].'</td>'; 
       echo '<td>'.$data['person_name'].'</td>'; 
       echo '<td>'.$data['country_name'].'</td>'; 
       echo '<td>'.$data['state_name'].'</td>';  
       echo '<td>'.$data['city_name'].'</td>'; 
       echo '<td><a href="viewinfo.php?id='.$data['id_info'].'">Detail</a>/<a href="edit.php?id='.$data['id_info'].'">Edit</a>/<a href="delete.php?id='.$data['id_info'].'" onclick="return confirm(\'Are You Sure?\')">Delete</a></td>'; 
      echo '</tr>'; 

      $no++; 

     } 

    } 
    ?> 
+0

Какое имя вашей таблицы? –

+0

Вам нужно использовать все поля? Или вам нужны только названия страны, штата и города? – Edper

+0

@FerrakkemBhuiyan: информация, страна, штат, город – Kris

ответ

0

Попробуйте изменить вашу GROUP BY и использовать INNER ПРИСОЕДИНЕНИЕ:

SELECT * 
    FROM information 
    INNER JOIN country ON information.country_id =country.country_id 
    INNER JOIN state ON information.state_id = state.state_id 
    INNER JOIN city ON information.city_id = city.city_id 
    GROUP BY information.country_id, information.state_id, information.city_id 
+0

Отображается только два данных. – Kris

2

Вы можете использовать INNER JOIN при условии, что индекс ключ используется должным образом:

SELECT country.country_name, 
     state.state_name, 
     city.city_name 
FROM information 
INNER JOIN country ON information.country_id = country.country_id 
INNER JOIN state ON information.state_id = state.state_id 
INNER JOIN city ON information.city_id = city.city_id 
+0

Ну, это все равно одно и то же, но будет отображаться 19334 записей, но в базе данных только пять записей. Возможно, я ошибся в своем сценарии, я обновил свои полные сценарии выше. – Kris

+0

@ Kris - покажите нам, как вы извлекаете данные. Обновить сообщение –

+0

Я просто сделал :) обновил мои полные скрипты для отображения данных в таблице с редактированием, удалением и просмотром подробных скриптов в отдельных файлах. – Kris

0

Теперь он работал, * вздохнул р roblem - это таблица в информации, сначала я должен очистить таблицу.

Это было очень много со мной, записи были источником проблем, я прошел через это много. Спасибо, ребята, за помощь, теперь это прекрасно работает.

Два ответа выше работали отлично, спасибо.

+0

Рад, что вы нашли решение Kris. Счастливое кодирование и благословение Бога. – Edper

Смежные вопросы