[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как объединить таблицы?
Lutsk
Я новичок, - поэтому не судите строго, - просто нужна помощь.
Есть 2 сайта Джумла на одном домене, и соответственно у них одинаковые названия столбцов таблиц. Есть необходимость вывести новости на титульной странице сайта (она статична). Написал такой запрос, но правильно не работает:

$query = "SELECT a.introtext, b.introtext FROM res_content AS a, cafe_content AS b
WHERE a.catid !=0 AND a.catid !=0";
$result = mysql_query($query) or die("Query failed : " . mysql_error());

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
foreach ($line as $col_value) {
print "$col_value";
}
}

catid - это поле, по которому надо исключить выбор новости.

Еще бы сюда сортировку по дате добавить (по столбцу "created").

Огромное спасибо заранее!



Спустя 8 минут, 33 секунды (17.01.2012 - 13:40) Jack_White написал(а):
Lutsk
Цитата (Lutsk @ 17.01.2012 - 10:31)
WHERE a.catid !=0 AND a.catid !=0";


может
WHERE a.catid !=0 AND b.catid !=0;


Цитата (Lutsk @ 17.01.2012 - 10:31)
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {


вместо этого лучше использовать
while ($line = mysql_fetch_assoc($result)



Спустя 4 минуты, 46 секунд (17.01.2012 - 13:45) asokol написал(а):

SELECT `introtext`, `created`, FROM `res_content` WHERE `catid`!=0
UNION
SELECT
`introtext`, `created` FROM `cafe_content` WHERE `catid`!=0
ORDER BY `created` DESC

Спустя 3 минуты, 6 секунд (17.01.2012 - 13:48) Jack_White написал(а):
вообще используй например left inner join для объединения таблиц...
сортировка ORDER BY (дата) DESC

Спустя 24 минуты, 48 секунд (17.01.2012 - 14:13) Lutsk написал(а):
asokol, - работает, спасибо! Только вот дата выводится, а она там не нужна. Как от нее избавиться?

Спустя 10 минут, 7 секунд (17.01.2012 - 14:23) asokol написал(а):
Это уже не смешно.

Вместо:

foreach ($line as $col_value) {
print "$col_value";
}

Сделать:
print $line['introtext']

Спустя 9 минут, 21 секунда (17.01.2012 - 14:32) Lutsk написал(а):
Цитата (asokol @ 17.01.2012 - 11:23)
print $line['introtext']

точно. Вот туплю... Мозги просто закипели. ohmy.gif

Спустя 1 час, 55 минут, 12 секунд (17.01.2012 - 16:27) Lutsk написал(а):
Все равно что-то не то у меня с кодом. Выводит по 2 записи одного поля. Привожу теперешний код:


$query = "SELECT title, created FROM res_content WHERE catid!=0
UNION
SELECT title, created FROM cafe_content WHERE catid!=0
ORDER BY created DESC"
;
$result = mysql_query($query) or die("Query failed : " . mysql_error());

while ($rows = mysql_fetch_assoc($result)) {
echo "\t<div class='n_block' style='float: left; margin-left:40px;'>\n";
foreach ($rows as $row) {
echo $rows['title'];
}
echo "\t</div>\n";
}


Запарился уже. :blink:

Спустя 18 минут, 6 секунд (17.01.2012 - 16:45) Placido написал(а):
А зачем там foreach ($rows as $row)?

Спустя 16 секунд (17.01.2012 - 16:46) asokol написал(а):
mysql_fetch_assoc возвращает не строки, а одну строку результата.

Спустя 1 час, 22 минуты, 11 секунд (17.01.2012 - 18:08) Lutsk написал(а):
в foreach если echo $row - выводится титл и дата. Если echo $rows['title'] - два титла.
Значит, все-таки запрос по-другому писать надо?

P.S. А может это дело как-то при помощи создания временной таблицы TEMPORARY TABLE сделать можно, если более простые способы не подходят?
Вобщем, нужен совет, вопрос остался открыт...

Спустя 26 минут, 13 секунд (17.01.2012 - 18:34) Placido написал(а):
Так что нужно вывести? Только тайтлы или и тайтлы, и даты?
Если первое, то
while ($row = mysql_fetch_assoc($result)) {
echo $row['title'] . "\r\n";
}

Если второе, то
while ($row = mysql_fetch_assoc($result)) {
echo $row['title'] . "\r\n" . $row['created'] . "\r\n";
}

Спустя 17 минут, 20 секунд (17.01.2012 - 18:51) Lutsk написал(а):
Ура, вышло! Placido, как раз додумался, - но все равно спасибо. В итоге получилось это:

$query = "SELECT title, created FROM res_content WHERE catid !=0
UNION
SELECT title, created FROM cafe_content WHERE catid!=0
ORDER BY created DESC LIMIT 3"
;
$result = mysql_query($query) or die("Query failed : " . mysql_error());

while ($rows = mysql_fetch_assoc($result)) {
echo "\t<div class='n_block' style='float: left;'>\n";
echo $rows['title'];
echo "\t</div>\n";
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.