FuelMedlem sedan okt. 20001 325 inlägg
Hej, har både dammat av mig själv och mysql joins, skulle behöva en del hjälp med en kodsnutt samt lite länkar till info.
Ex. har 3 tabeller. 1. rek 2. kat & 3. anv
I tabell 1(rek) sparas det mesta. Där plockar jag ut en rubrik, ett datum, ett kategori id & 2st användar id´n ( ett id skrev in datan & det andra id´t ändrade sedan )
så hur gör jag ?
SELECT
rek.rubrik, rek.id, rek.skrev, rek.andrade, rek.kat, rek.datum,
anv.id, anv.namn,
kat.id, kat.name, kat.bild
FROM
rek
LEFT JOIN
anv
ON
rek.skrev = anv.id
LEFT JOIN
anv
rek.andrade = anv.id
LEFT JOIN
kat
ON
rek.kat = kat.id
ORDER BY rek.datum DESC
Det är det mesta som ska ut ur rek, kategori? id får man ju på anv. blir knivigare när jag vill ha namn på både han som skrev & han som ändrade på samma rad.
Alltså... typ...
ID | Kategori Namn | Rubrik | Datum | Han som skrev + hans id | Hans om ändrade + hans id
ID | Kategori Namn | Rubrik | Datum | Han som skrev + hans id | Hans om ändrade + hans id
ID | Kategori Namn | Rubrik | Datum | Han som skrev + hans id | Hans om ändrade + hans id
ID | Kategori Namn | Rubrik..... osv osv
PeddaMedlem sedan juni 20004 880 inlägg
The_HulkMedlem sedan juni 20031 937 inlägg
du måste sätta ett alias på anv-tabellen om du använder den mer än en gång
SELECT
rek.rubrik, rek.id, rek.skrev, rek.andrade, rek.kat, rek.datum,
a1.id, a1.namn,
a2.id, a2.namn,
kat.id, kat.name, kat.bild
FROM
rek
LEFT JOIN
anv AS a1
ON
rek.skrev = a1.id
LEFT JOIN
anv AS a2
rek.andrade = a2.id
LEFT JOIN
kat
ON
rek.kat = kat.id
ORDER BY rek.datum DESC
FuelMedlem sedan okt. 20001 325 inlägg
Hmm.. vad gör jag för fel ?
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'requests.by = users2.id LEFT JOIN categories ' at line 14
$req_sql = "SELECT
requests.headline, requests.id, requests.userid, requests.by, requests.text, requests.added, requests.cat, requests.hits,
users1.id, users1.username AS USR_NAME1,
users2.id, users2.username AS USR_NAME2,
categories.id AS CAT_ID, categories.name AS CAT_NAME, categories.image AS CAT_IMAGE
FROM
requests
LEFT JOIN
users AS users1
ON
requests.userid = users1.id
LEFT JOIN
users AS users2
requests.by = users2.id
LEFT JOIN
categories
ON
requests.cat = categories.id
ORDER BY requests.added DESC";
$get_req = mysql_query($req_sql) or die("Error: ".mysql_error()."");
Är det för att requests.by kan var tomt i vissa fall ?
@ndersMedlem sedan juni 200026 914 inlägg
Är det för att requests.by kan var tomt i vissa fall ?
Nej, det har ju inte med syntaxen att göra. Däremot hittar jag inte stället i koden som felmeddelandet pekar på? requests.filledby = users2.id finns ju inte med i din SQL-fråga???
edit: jaha, där kom en redigering.
by är rätt fett reserverat. Byt namn.
FuelMedlem sedan okt. 20001 325 inlägg
:( still no go.. samma fel fortfarande, är jag rätt ute i syntaxen ändå ?
@ndersMedlem sedan juni 200026 914 inlägg
Samma felmeddelande, trots att du bytt namn på fältet?
FuelMedlem sedan okt. 20001 325 inlägg
@ndersMedlem sedan juni 200026 914 inlägg
Ok, exakt hur ser felmeddelandet ut nu, och exakt hur ser SQL-frågan ut nu?
FuelMedlem sedan okt. 20001 325 inlägg
Så här...
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'requests.filledby = users2.id LEFT JOIN categories ' at line 14
$req_sql = "SELECT
requests.headline, requests.id, requests.userid, requests.fillerid, requests.description, requests.added, requests.cat, requests.hits,
users1.id, users1.username AS USR_NAME1,
users2.id, users2.username AS USR_NAME2,
categories.id AS CAT_ID, categories.name AS CAT_NAME, categories.image AS CAT_IMAGE
FROM
requests
LEFT JOIN
users AS users1
ON
requests.userid = users1.id
LEFT JOIN
users AS users2
requests.fillerid = users2.id
LEFT JOIN
categories
ON
requests.cat = categories.id
ORDER BY requests.added DESC";
$get_req = mysql_query($req_sql) or die("<div class='mysql-error'>Error: ".mysql_error()."</div>");
CREATE TABLE `requests` (
`id` int(10) unsigned NOT NULL auto_increment,
`userid` int(10) unsigned NOT NULL default '0',
`headline` varchar(225) default NULL,
`description` text NOT NULL,
`added` datetime NOT NULL default '0000-00-00 00:00:00',
`hits` int(10) unsigned NOT NULL default '0',
`cat` int(10) unsigned NOT NULL default '0',
`fillerid` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `userid` (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL auto_increment,
`username` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE `categories` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`image` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
while ($req = mysql_fetch_array($get_req))
{
echo "<p>".$req['CAT_NAME']."</p>";
echo "<p>".$req['headline']."</p>\n";
echo "<p>".$req['USR_NAME1']."</p>\n";
echo "<p>".$req['USR_NAME2']."</p>\n";
echo "<hr />";
}
@ndersMedlem sedan juni 200026 914 inlägg
users AS users2
[b]ON[/b]
requests.fillerid = users2.id
FuelMedlem sedan okt. 20001 325 inlägg
bra.. :) tack!
blev " requests.id AS REQ_ID " också för att få rätt id