php-sql-query-builder
php-sql-query-builder copied to clipboard
Across table conditions
I would like to know how to build the query like below that has conditions across tables.
SELECT TableA.ColA, TableB.ColB
FROM TableA
INNER JOIN TableB ON TableA.id=TableB.id
WHERE (TableA.ColX = TableB.ColX OR TableA.ColY > TableB.ColY) AND (TableA.ColZ < TableB.ColZ)
Is there a simpler way than this?
use NilPortugues\Sql\QueryBuilder\Syntax\Column;
use NilPortugues\Sql\QueryBuilder\Manipulation\Select;
$select = new Select("TableA");
$select->setColumns(array("ColA"));
$select->innerJoin("TableB", "id", "id", array("ColB"));
$where = $select->where();
$where->subWhere()
->equals("ColX", new Column("ColX", "TableB"))
->greaterThan("ColY", new Column("ColY", "TableB"));
$where->subWhere()
->lessThan("ColZ", new Column("ColZ", "TableB"));
use NilPortugues\Sql\QueryBuilder\Builder\MySqlBuilder;
$builder = new MySqlBuilder();
echo $builder->writeFormatted($select) . "\n";
not for the time being
Simpler way would be raw mysql query @prasad83