my $sth = $dbh->prepare(' SELECT * FROM post_translations JOIN posts ON post_translations.post_translation_id = posts.post_translation_id JOIN languages ON post_translations.lang_id = languages.lang_id WHERE posts.post_id = ? AND languages.lang_name = ? '); $sth->execute($post_id, $language_name); #### CREATE TABLE `languages` ( `lang_id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `lang_name` VARCHAR(60) NOT NULL ); CREATE TABLE `post_translations` ( `post_translation_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `post_translation_cat` INT(11) UNSIGNED NOT NULL, `post_translation_date` DATETIME NOT NULL, `post_translation_title` VARCHAR(255) NOT NULL, `post_translation_body` TEXT NOT NULL, `post_translation_lang` TINYINT UNSIGNED NOT NULL ); CREATE TABLE `posts` ( `post_id`, INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, ); CREATE TABLE `post_to_translation` ( `post_id`, INT(11) UNSIGNED NOT NULL, `post_translation_id` INT(11) UNSIGNED NOT NULL, ); #### CREATE TABLE `languages` ( `lang_id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `lang_name` VARCHAR(60) NOT NULL ); CREATE TABLE `post_translations` ( `post_id`, INT(11) UNSIGNED NOT NULL, `post_translation_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `post_translation_cat` INT(11) UNSIGNED NOT NULL, `post_translation_date` DATETIME NOT NULL, `post_translation_title` VARCHAR(255) NOT NULL, `post_translation_body` TEXT NOT NULL, `post_translation_lang` TINYINT UNSIGNED NOT NULL ); CREATE TABLE `posts` ( `post_id`, INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, );