2012-10-13 6 views
1

Comment ajouter des caractères génériques% à "specifications.sn"?Ajouter un caractère générique dans la condition de jointure

SELECT `products2`.`type`, 
     `products2`.`sn`, 
     `products2`.`lap`, 
     `specifications`.`year` 
FROM `products2` 
INNER JOIN `specifications` 
     ON `products2`.`sn` LIKE `specifications`.`sn` 
WHERE `products2`.`id` = ? LIMIT 1 

EDIT:

actuelle Ajout requête

  • Removed
  • contre-apostrophes

    Ajouté votre CONCAT

    SELECT products2.type, 
    products2.sn, 
    products2.lap, 
    specifications.year 
    FROM products2 
    INNER JOIN specifications 
    ON products2.sn LIKE CONCAT('%', specifications.sn, '%') 
    WHERE products2.id = ? LIMIT 1 
    

Alterna requête tive - même erreur comme code ci-dessus

  • Removed des accents graves
  • Suppression INNER JOIN
  • Ajouté LIKE dans instruction WHERE

    SELECT products2.type, 
    products2.sn, 
    products2.lap, 
    specifications.year 
    FROM products2, 
    specifications 
    WHERE products2.id = ? AND products2.sn LIKE '%' + specifications.sn + '%' LIMIT 1 
    

EDIT2

code PHP

if ($stmt = $mysqli->prepare('SELECT products2.type, 
products2.sn, 
products2.lap, 
specifications.year 
FROM products2 
INNER JOIN specifications 
ON products2.sn LIKE CONCAT('%', specifications.sn, '%') 
WHERE products2.id = ? LIMIT 1')) { 

$stmt->bind_param('i', $id); 
$id = $_GET['id']; 
$stmt->execute(); 
$stmt->bind_result($type, $sn, $lap, $year); 
$stmt->fetch(); 

echo $type . '<br/>'; 
echo $sn . '<br/>'; 
echo $lap . '<br/>'; 
echo $year . '<br/>'; 

$stmt->close(); 

} else { 
echo $mysqli->error; 
} 
+0

Je pense que c'est un problème de comment la requête est appelée. Si vous le collez dans phpmyadmin cela fonctionnera – Sebas

+0

Vous avez raison. Comment puis-je résoudre ce problème? Est-ce parce que j'utilise une instruction préparée? – user1273409

+0

Pourriez-vous également poster la partie php? – Sebas

Répondre

2
SELECT `products2`.`type`, 
     `products2`.`sn`, 
     `products2`.`lap`, `specifications`.`year` 
FROM `products2` 
INNER JOIN `specifications` 
     ON `products2`.`sn` LIKE 
     CONCAT(`specifications`.`sn`, '%') 
WHERE `products2`.`id` = ? LIMIT 1 

S'il vous plaît noter les points suivants:

  • cela va être très inefficace en ce qui concerne à se joindre à des performances
  • CONCAT(NULL, 'ADADSA') retours NULL, donc vous devez prendre soin de ce cas particulier d'utilisation si vous pense specifications. sn peut être NULL.

Cheers.

+0

Aimez-vous% 'specifications'.'sn'%? – user1273409

+0

vous pouvez utiliser CONCAT avec autant de paramètres que vous le souhaitez, par exemple dans votre cas, vous pouvez en effet faire CONCAT ('%', spécifications.sn, '%') ' – Sebas

+0

Je vois. Merci ... – user1273409

Questions connexes