Взимане на инфо от две таблици...

skatebord

Registered
Да не си губя времето в обяснения а да давам кода.
Код:
<?php 
include("includes/configuration.php");
$database="school";
mysql_connect($host,$name,$pass);
mysql_select_db($database) or die( "Unable to select database");

$query = "SELECT * FROM albums ORDER BY id DESC";

$result = mysql_query($query) or die('Error, query failed');

while($row = mysql_fetch_array($result))
{

$name = $row['name'];
$author = $row['author'];
$date = $row['date'];
$lat = $row['lat'];

echo "<a href=\"viewalbum.php?album=$name\">$name</a><br/>
Автор: $author<br/>
Дата: $date";
}

Това е и ми изкарва всички албуми от таблицата, но искам да добавя там и последната снимка качена в този албум. Кода е
Код:
SELECT * FROM images ORDER BY id DESC WHERE album='$lat' LIMIT 1

Но как да го направя в горното над
Код:
<a href=\"viewalbum.php?album=$name\">$name</a><br/>
Да ми показва последната снимката...
 
използвай join.
ako пак имаш проблем, дай да видим CREATE TABLE за 2-те таблици и опиши кои полета искаш да извлечеш.
 
Съжелямам ама сега виждам темата :oops:
Това ми е таблицата albums:
Код:
CREATE TABLE albums (
id int(10) NOT NULL auto_increment,
name varchar(50) NOT NULL,
author varchar(50) NOT NULL,
ip varchar(100) NOT NULL,
date varchar(50) NOT NULL,
lat varchar(50) NOT NULL,
PRIMARY KEY (`id`))

Това ми е таблицата images:
Код:
CREATE TABLE images (
id int(10) NOT NULL auto_increment,
name varchar(50) NOT NULL,
comment varchar(300) NOT NULL,
album varchar(100) NOT NULL,
PRIMARY KEY (`id`))

Искам с този код тук да изкарам изображение от images където колоната album е равна на $lat

Код:
<?php
include("includes/configuration.php");
$database="school";
mysql_connect($host,$name,$pass);
mysql_select_db($database) or die( "Unable to select database");

$query = "SELECT * FROM albums ORDER BY id DESC";

$result = mysql_query($query) or die('Error, query failed');

while($row = mysql_fetch_array($result))
{
$name = $row['name'];
$author = $row['author'];
$date = $row['date'];
$lat = $row['lat'];

echo "
//Тук искам изображението, което отговаря на $lat
<a href=\"viewalbum.php?album=$name\">$name</a><br/>
Автор: $author<br/>
Дата: $date";
}
 
така добре ли е:
Код:
<?php
include("includes/configuration.php");
$database="school";
mysql_connect($host,$name,$pass);
mysql_select_db($database) or die( "Unable to select database");

$query = "SELECT id,name,author,ip,date,lat,album FROM albums LEFT JOIN images ON (albums.lat=images.album) ORDER BY albums.id DESC";

$result = mysql_query($query) or die('Error, query failed');

while($row = mysql_fetch_array($result))
{
$name = $row['name'];
$author = $row['author'];
$date = $row['date'];
$lat = $row['lat'];
$snimka = $row['album'];

echo "<a href=\"viewalbum.php?album=$name\">$name</a><br/>
Автор: $author<br/>
Дата: $date<br/>";
if (!empty($snimka)) echo "Снимка:$snimka<br/>";
}
ok?
8)
 
Супер е, барнах го малко, така ми е заявката:
Код:
$query = "SELECT * FROM albums LEFT JOIN images ON (albums.lat=images.album) ORDER BY albums.id DESC";

Как да подредя резултата от images по id DESC и да му задам LIMIT 1 :roll:
p.s. +1
 
10X 3a mo4kama :)
Код:
$query = "SELECT * FROM albums LEFT JOIN images ON (albums.lat=images.album) ORDER BY images.id DESC LIMIT 1";
ако съм разбрал правилно въпроса ти
 
Не, не да си стои ORDER-а на albums, но да изкара последната снимка от images, тоест да ги подреди по id DESC и да ги лимитира до 1. Защото така когато има един албум с две снимки в него прави два линка към албума, ако има 100 снимки в албума, ще направи 100 линка към него :roll:
 
ако искаш да изкара само една снимка или албум и то първия
ползваш командата break;
 
Искам да изкарам всички албуми с последната снимка към тях. Проблема е че таблиците са 2...
 
т.е. нещо такова:
Код:
$query = "SELECT * FROM images LEFT JOIN albums ON (albums.lat=images.album) ORDER BY albums.id DESC";

добре ще е да си преработиш малко датабейс модела.
a най-добре ще е:
Код:
$query = "SELECT * FROM images LEFT JOIN albums ON (albums.lat=images.album) ORDER BY images.id DESC";
8)
 
Незнам защо ама нещо не ми става работата (тя става ама не която ми трябва в момента :twisted: ) :roll: Да обясня пак. Искам да изкарам всички албуми от таблицата albums, и към всеки албум да изкарам последната снимка, която е записана в таблицата images.
albums
Код:
|   id   |   name   |   author   |   ip   |   date   |   lat   |
_______________________________________
|   1    |   името   |   avtora  |  85.. | 1.1.07 |imeto |
|   2    |   имет2   |   avtor2  |  85.. | 2.2.07 |imet2 |
|   3    |   имет3   |   avtor3  |  85.. | 3.3.07 |imet3 |

images
Код:
|   id   |   image  |   comment   |  album  |
________________________________
|   1    |   izobr    |   comentar   | albuma |
|   2    |   izobr    |   comenta2  | albuma |
|   3    |   izobr    |   comenta3  | albuma |

Когато изкарвам инфото трябва да стане така
Код:
___________________
|      | izobrajenie|           |
|      |                      |           |
|      |                      |           |
|      |                      |           |
|      |-------------|           |
|                                          |
|     ime na albuma         |
|   avtor na albuma        |
|  data na syzdawane   |
|__________________|
Където izobrajenie е последното ID записано в таблицата images с колона album = колоната name в таблицата albums.
 
skatebord каза:
............................................
Където izobrajenie е последното ID записано в таблицата images с колона album = колоната name в таблицата albums.
$query = "SELECT albums.id,images.id,name,author,ip,date,lat,album FROM albums LEFT JOIN images ON (albums.name=images.album) ORDER BY albums.id DESC";
a може и select * -> kakmo прецениш
8)
 
skatebord каза:
Да, но трябва да се даде лимит на заявката към images - LIMIT 1 :roll:

добре де, създаваш си виртуална таблица (в случая bla) по какъвто си искаш критерий (за Example-mo ORDER BY ID DESC LIMIT 1) u JOIN-ваш:
Код:
SELECT albums.id,bla.id,albums.name,author,ip,date,lat,album FROM albums LEFT JOIN (SELECT * FROM images ORDER BY id DESC LIMIT 1) AS bla ON (albums.name=bla.album) ORDER BY albums.id DESC;
ok?
8)
 
аз имам подобен проблем, как да да огранича резултатите. В моя случай hot = 1

Код:
$result = mysql_query ("SELECT * FROM jos_estateagent RIGHT JOIN jos_estateagent_images ON jos_estateagent.id=jos_estateagent_images.obj_id WHERE hot = 1");

ама ми дава грешка :evil: :oops:
 
netsurfer каза:
аз имам подобен проблем, как да да огранича резултатите. В моя случай hot = 1

Код:
$result = mysql_query ("SELECT * FROM jos_estateagent RIGHT JOIN jos_estateagent_images ON jos_estateagent.id=jos_estateagent_images.obj_id WHERE hot = 1");

ама ми дава грешка :evil: :oops:

Посочи това хот на коя таблица отговаря, пример jos_estateagent_images.hot
 
jooorooo каза:
netsurfer каза:
аз имам подобен проблем, как да да огранича резултатите. В моя случай hot = 1

Код:
$result = mysql_query ("SELECT * FROM jos_estateagent RIGHT JOIN jos_estateagent_images ON jos_estateagent.id=jos_estateagent_images.obj_id WHERE hot = 1");

ама ми дава грешка :evil: :oops:

Посочи това хот на коя таблица отговаря, пример jos_estateagent_images.hot
мерси ;)
 
нещо такова

$result = mysql_query ("SELECT * FROM jos_estateagent, jos_estateagent_images WHERE jos_estateagent.id=jos_estateagent_images.obj_id AND table.hot = 1");

червеното не знам за коя таблица се отнася
 

Back
Горе