WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   MYSQL fel (https://www.wn.se/forum/showthread.php?t=1048486)

qm-alexander 2011-05-31 21:18

MYSQL fel
 
Hejsan alla wnare!

Jag håller på att bli galen och söker nu lite råd här :).


Jag har en tabell som innehåller en massa data. (tblDATA)
I den finns det ett fält som heter text och detta vill jag ha ut.

Löseningen bygger på att man inte ska få samma text från tblDATA och därför finns det en kopplingstabell vid namn (tblnoDuplicates)

i tblnoDublicates finns det ett fält vid namn customerID.


MYSQL:

SELECT
tblDATA.text
FROM
tblDATA
Left Join tblnoDuplicates ON tblDATA.dataID = tblnoDuplicates.dataID
WHERE
tblnoDuplicates.customerID NOT LIKE '1' //Detta är ett ID som inte finns.
LIMIT 1

Detta bör resultera i en tblDATA.text men jag får bara null.

Något gör jag fel men vad :)

Tack för hjälpen!

nosnaj 2011-05-31 22:05

Vore ju önskvärt att få hela tabellstrukturerna.
Finns ens raden med i tabellen du kör left join på?
Testa ta bort limit 1 för att se så du verkligen får som du tänkt dig.
Sen känns det lite varning att ha en tabell för att inte få dubletter?

qm-alexander 2011-05-31 22:12

Här kommer strukturen:

tblDATA
dataID (INT)
text (VARCHAR 255)
userID (INT)
created (DATETIME)

tblnoDuplicates
duplicateID (INT)
dataID (INT)
customerID (INT)
created (DATETIME)

nosnaj 2011-05-31 22:26

Har säkert att göra med att du kör NOT LIKE mot rader som innehåller NULL vilket manualen varnar dig för.
Testa att ta bort WHERE-vilkoret och LIMIT så ser du om du får in NULL vilket sen ställer till det för dig.

http://dev.mysql.com/doc/refman/5.0/...rator_not-like

qm-alexander 2011-05-31 22:27

jag får null värde vad ska jag göra för att lösa detta?

jonny 2011-05-31 22:31

Kan du förklara vad du är ute efter och varför du har denna databasstruktur? Rent spontant känns det som att du tänkt fel redan när du designat din databas

nosnaj 2011-05-31 22:34

Vad är anledningen att du har en separat tabell med massa info om duplicates?
Vill du inte visa de rader i tblDATA som finns i tblnoDuplicates?
Isf är det ju enklare att köra en annan sql tex:

SELECT tblDATA.text
FROM tblDATA
WHERE dataID NOT
IN (

SELECT dataID
FROM tblnoduplicates
)
LIMIT 1

qm-alexander 2011-05-31 22:40

Tanken är så här:

Klienten får ett meddelande från tblDATA.
När klienten har fått detta meddelande så lämnas datan om vilket meddelande klienten har fått till tblnoDuplicates så att klienten inte får samma en gång till.

jonny hur hade du tänkt dig att det skulle se ut?

qm-alexander 2011-05-31 22:41

Citat:

Ursprungligen postat av nosnaj (Inlägg 20407181)
Vad är anledningen att du har en separat tabell med massa info om duplicates?
Vill du inte visa de rader i tblDATA som finns i tblnoDuplicates?
Isf är det ju enklare att köra en annan sql tex:

SELECT tblDATA.text
FROM tblDATA
WHERE dataID NOT
IN (

SELECT dataID
FROM tblnoduplicates
)
LIMIT 1

Detta är för att jag vill att klienten inte ska få samma meddelande mer en 1 gång :)

nosnaj 2011-05-31 23:19

Löste inte min SQL dina problem?
Du får ju dock även lägga in where-vilkor så det kollar för rätt användare, lämnas som övning :)
Tänk vad enklare livet vore om tblnoduplicates hade hetat readTblDATAItems eller liknande, då skulle man förstå vad den var till för.


Alla tider är GMT +2. Klockan är nu 04:18.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson