I have these two tables:
Table: ORDERS
ID - NAME - DATA
---------------------------------------------
1 - Order 1 - node_checkout_nid";i:141;s:10:
2 - Order 2 - node_checkout_nid";i:142;s:10:
Table: NODES
NID - Description
--------------------
141 - bla bla bla
142 - bla bla bla 2
I need a SQL join query that can join the two tables on NID, keeping in mind the NID is in the "DATA" column.
I need to end with this:
Table: RESULT
ID - NAME - DATA NID - Description
-----------------------------------------------------------------------------------
1 - Order 1 - node_checkout_nid";i:141;s:10: - 141 - bla bla bla
2 - Order 2 - node_checkout_nid";i:142;s:10: - 142 - bla bla bla 2
I wanted to use a "like" join, but I think (if it's possible) a "contains" join would be better? Any help would be greatly appreciated!
You can use the USING clause for a shorthand way of defining join conditions. The USING clause is equivalent to a join condition where each column from the left table is compared to a column with the same name in the right table.
The syntax for the RIGHT OUTER JOIN in MySQL is: SELECT columns FROM table1 RIGHT [OUTER] JOIN table2 ON table1. column = table2.
We can use 'cross join' without on condition. Cross join gives the result in cartesian product form. For instance, if in one table there are 3 records and another table has 2 records, then the first record will match with all the second table records. Then, the same process will be repeated for second record and so on.
You can use:
SELECT ID, NAME, DATA, NID, Description
FROM ORDERS INNER JOIN NODES ON DATA LIKE CONCAT('%;i:', NID, ';%')
Anyway it's a heavy query. It's not a good idea to have the NID inside the data field as a plain text, better in a different column.
You data is denormalised. You're storing some serialized object in DATA
column and are trying to perform relational operations basing on that. While it is possible to do so, mind that it will be slow and potentially unreliable. Just store your NID in a separate column.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With