FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
Jag har en tabell som jag vill radera rader från.
Mitt problem är att jag vill kolla rader mot kolumner. Så här långt har jag kommit, funkar dock ej: Kod:
DELETE FROM entity_attributes WHERE itemid IN ( SELECT itemid FROM entity_attributes e WHERE (SELECT COUNT(*) FROM entity_attributes WHERE itemid = e.itemid AND attributeid = 280) = 1 AND (SELECT COUNT(*) FROM entity_attributes WHERE itemid = e.itemid AND attributeid = 276) = 1) Senast redigerad av PaLL3 den 2010-10-21 klockan 19:43 |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Du har gjort det onödigt komplicerat för dig.
Varför köra så många querys i samma fråga? Det tar säkerligen längre tid än att göra det i separata frågor och loopa igenom det på serversidan, likaså otroligt mycket enklare att lösa problemen. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Nykomling
|
Ok, får testa.
Tack för svar... *EDIT* Får det icke att funka. Fattar inte problemet... Senast redigerad av PaLL3 den 2010-10-21 klockan 21:13 |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Nykomling
|
Jag körde denna istället;
Kod:
$result = mysql_query("select itemid from entity_attributes e where(select count(*) from entity_attributes where itemid = e.itemid and attributeid = 280) = 1 and (select count(*) from entity_attributes where itemid = e.itemid and attributeid = 276) = 1"); while($row = mysql_fetch_array($result)) $list .= $row['ItemID'] . ','; mysql_query("delete from entity_attributes where itemid in ($list)"); |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Kod:
$result = mysql_query("select distinct itemid from entity_attributes e where attributeid= 276 OR attributeid=280"); while($row = mysql_fetch_assoc($result)) $list[] = $row['itemid']; mysql_query("delete from entity_attributes where itemid in (" . implode(',',$list) . ")"); |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Administratör
|
Citat:
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Nykomling
|
Tack för hjälpen!
Och förklaringen! =) |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Nykomling
|
Sorry for dubbelpost men;
testade precis Jonas query. Problemet var att den raderade precis ALLA rader som innhöll attributeID 280 och 276 där den egentligen bara skulle raderat raderna med attributID 280 som inte hade en matchande itemID med 276. Alltså en rad består av kollumnamn itemID, attributID. AttributID består enbart av 280 eller 276 men dessa ska ha samma itemID för att höra ihop. Och om det enbart finns en rad med antingen ett attributID 280 eller 276 men med ett unikt itemID ska det raderas... Senast redigerad av PaLL3 den 2010-10-22 klockan 08:40 |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Nykomling
|
Ok, nu har jag kommit så här långt, tack Magnus...
![]() Kod:
$dsn = 'mysql:dbname=DBNAME;host=localhost'; $dbUser = 'USER'; $dbPassword = 'PASSWORD'; $dbh = new PDO($dsn, $dbUser, $dbPassword); $res = $dbh->prepare('select count(itemID) as count, itemID from entity_attributes group by itemID having count <2'); $res->execute(); $result = $res->fetchAll(PDO::FETCH_COLUMN, 1); $test = implode(' ',$result); print_r($test); //mysql_query("delete from entity_attributes where count(itemid) in ($test)"); $dbh = null; |
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Nykomling
|
Fick det att fungera.
Tack, återigen, Magnus för att du visade mig vägen... |
||
![]() |
![]() |
Svara |
|
|