[LØST] MySQL opslag
Hejsa gruppe
Jeg har et lille spørgsmål omkring MySQL
Jeg har 2 tabeller
Users og vessels
Mit sql kald ser således ud PT - men der mangler noget
SELECT users.uid,users.name,users.lastname,users.timestamp,vessels.name from users,vessels where users.state='X' AND users.uid=vessels.uid;
Som det ses her ønsker jeg
uid name lastname og timestamp fra users tabellen - samtidigt med jeg ønsker at få navnet fra vessels tabellen hvor mit username står i uid.
Dert fungerer reelt set fint så længe der er noget i vessels.uid - Men hvis det er tomt eller NULL kommer kommer der empty resultset - Hvilket er logisk sålænge vesselsd.uid er tomt - så er der ikke noget resultat .
Kan man på nogen måde acceptere et tomt felt - eller skrive sig ud af - at feltet vessels.uid kunne være tomt - og derfor ikke kunne bruges med i sammenligningen!
Alt således at jeg får users.uid users.name users.lastname users timestamp samt vessels.name HVIS users.uid=vessels.uid
Håber det giver lidt mening
Jeg har et lille spørgsmål omkring MySQL
Jeg har 2 tabeller
Users og vessels
tbl 1
+-----+------+------------+---------------------+
| uid | name | lastname | timestamp |
+-----+------+------------+---------------------+
tbl 2 vessels
+----+---------+-----------------+-----+---------+------+--------+
| id | imo | name | sid | snr | uid | active |
+----+---------+-----------------+-----+---------+------+--------+
Mit sql kald ser således ud PT - men der mangler noget
SELECT users.uid,users.name,users.lastname,users.timestamp,vessels.name from users,vessels where users.state='X' AND users.uid=vessels.uid;
Som det ses her ønsker jeg
uid name lastname og timestamp fra users tabellen - samtidigt med jeg ønsker at få navnet fra vessels tabellen hvor mit username står i uid.
Dert fungerer reelt set fint så længe der er noget i vessels.uid - Men hvis det er tomt eller NULL kommer kommer der empty resultset - Hvilket er logisk sålænge vesselsd.uid er tomt - så er der ikke noget resultat .
Kan man på nogen måde acceptere et tomt felt - eller skrive sig ud af - at feltet vessels.uid kunne være tomt - og derfor ikke kunne bruges med i sammenligningen!
Alt således at jeg får users.uid users.name users.lastname users timestamp samt vessels.name HVIS users.uid=vessels.uid
Håber det giver lidt mening
Kommentarer4
Duer dette?
SELECT
SELECT users.uid,users.name,users.lastname,users.timestamp,vessels.name
from users,vessels
where users.state='X' AND
(users.uid=vessels.uid OR vessels.uid IS NULL);
Njaah....nok næppe. For så
Jeg tror du vil komme længere med at tilrette strukturen på din database. Normalt plejer man vel også at sige, at en tabel-id skal være required -- typisk ved at sætte den til autoincrement. Ellers får du noget bøvl med at joine tabeller.
Prøv med LEFT JOINSELECT
SELECT
users.uid,
users.name,
users.lastname,
users.timestamp,
vessels.name
FROM
users
LEFT JOIN
vessels ON users.uid = vessels.uid
WHERE
users.state = 'X'
@Marlar
Det var lige den
Det var lige den jeg manglende - Så det var selve syntaksen jeg havde en lille fejl i !